android/util中的一些常用類

來源:互聯網
上載者:User

標籤:

1.SparseArrays 

sparseArrays是映射Integer To Objects,可參照HashMap的作用.它的目的是更省記憶體,記憶體效率更高,因為它避免了keys的自動裝箱,而且它的結構也不用依賴每一個entry-set。它內部是用二分尋找去查詢,所以不適合key很多的情況,大概在幾百個元素的情況下,比hashmap的速度慢50%以下。

類似的有SparseBooleanArray,SparseIntArray,SparseLongArray,分別是映射Integer To Boolean,Int Long.

2.ArraySet ArrayMap

與上相同,數目不大情況下代替hashmap

3.AtomicFile

就是在寫檔案的同時本地儲存了一份copy,如果寫失敗可以從備份檔案恢複。

4.AttributeSet(interface),XmlPullAttributes(class),BridgeXmlPullAttributes(class)

AttributeSet只是一個解析xml的介面,子類Resources.Theme.obtainStyledAttributes();

也可以

XmlPullParser parser = resources.getXml(myResouce); AttributeSet attributes = Xml.asAttributeSet(parser);
View Code

5.Base64,Base64InputStream,Base64OutputStream

3個8位位元組(3*8=24)轉化為4個6位的位元組(4*6=24),之後在6位的前面補兩個0,形成8位一個位元組的形式.適用於網路傳輸,加密解密.

6.ContainerHelpers 

ArrayMap等中使用的二分尋找就是這貨的ContainerHelpers.binarySearch,沒有其他作用了

7.DisplayMetrics

用於擷取螢幕像素密度,low=120,mid=160,high=240...

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

8.FastImmutableArraySet

重複利用iterator,如果要遍曆數百次,效率是hashset的2.5倍。

9.FoatMath

基本不用了(效率低),類似Math的一些操作。

10.JsonReader,JsonWriter

json解析,用法

  public List<Message> readJsonStream(InputStream in) throws IOException {      JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));     try {        return readMessagesArray(reader);      } finally {        reader.close();      }    }     public List<Message> readMessagesArray(JsonReader reader) throws IOException {      List<Message> messages = new ArrayList<Message>();      reader.beginArray();      while (reader.hasNext()) {        messages.add(readMessage(reader));      }      reader.endArray();      return messages;    }     public Message readMessage(JsonReader reader) throws IOException {      long id = -1;     String text = null;      User user = null;      List<Double> geo = null;       reader.beginObject();      while (reader.hasNext()) {        String name = reader.nextName();        if (name.equals("id")) {          id = reader.nextLong();        } else if (name.equals("text")) {          text = reader.nextString();        } else if (name.equals("geo") && reader.peek() != JsonToken.NULL) {          geo = readDoublesArray(reader);        } else if (name.equals("user")) {          user = readUser(reader);        } else {          reader.skipValue();        }      }      reader.endObject();      return new Message(id, text, user, geo);    }     public List<Double> readDoublesArray(JsonReader reader) throws IOException {      List<Double> doubles = new ArrayList<Double>();       reader.beginArray();      while (reader.hasNext()) {        doubles.add(reader.nextDouble());      }      reader.endArray();      return doubles;    }     public User readUser(JsonReader reader) throws IOException {      String username = null;      int followersCount = -1;       reader.beginObject();      while (reader.hasNext()) {        String name = reader.nextName();        if (name.equals("name")) {          username = reader.nextString();        } else if (name.equals("followers_count")) {          followersCount = reader.nextInt();        } else {          reader.skipValue();        }      }      reader.endObject();      return new User(username, followersCount);    }
View Code
*   public void writeJsonStream(OutputStream out, List<Message> messages) throws IOException { *     JsonWriter writer = new JsonWriter(new OutputStreamWriter(out, "UTF-8")); *     writer.setIndent("  "); *     writeMessagesArray(writer, messages); *     writer.close(); *   } * *   public void writeMessagesArray(JsonWriter writer, List<Message> messages) throws IOException { *     writer.beginArray(); *     for (Message message : messages) { *       writeMessage(writer, message); *     } *     writer.endArray(); *   } * *   public void writeMessage(JsonWriter writer, Message message) throws IOException { *     writer.beginObject(); *     writer.name("id").value(message.getId()); *     writer.name("text").value(message.getText()); *     if (message.getGeo() != null) { *       writer.name("geo"); *       writeDoublesArray(writer, message.getGeo()); *     } else { *       writer.name("geo").nullValue(); *     } *     writer.name("user"); *     writeUser(writer, message.getUser()); *     writer.endObject(); *   } * *   public void writeUser(JsonWriter writer, User user) throws IOException { *     writer.beginObject(); *     writer.name("name").value(user.getName()); *     writer.name("followers_count").value(user.getFollowersCount()); *     writer.endObject(); *   } * *   public void writeDoublesArray(JsonWriter writer, List<Double> doubles) throws IOException { *     writer.beginArray(); *     for (Double value : doubles) { *       writer.value(value); *     } *     writer.endArray(); *   }
View Code

11.LruCache

用的是LinkedHashMap<K,V>,使用強引用,最近使用的元素移到隊列的最前,所以不經常使用的元素被移出。由於弱引用回收時間不確定,LruCache更好的作為圖片緩衝.

 *   int cacheSize = 4 * 1024 * 1024; // 4MiB *   LruCache<String, Bitmap> bitmapCache = new LruCache<String, Bitmap>(cacheSize) { *       protected int sizeOf(String key, Bitmap value) { *           return value.getByteCount(); *       } *   }}
View Code

12.Patterns

寫了常用的Ip,domain,email等的Regex

13.TimeUtils

擷取時區

14.xml

xml解析

 

android/util中的一些常用類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.