編輯:關於Android編程
本文實例分析了Android仿String的對象駐留。分享給大家供大家參考,具體如下:
String a = "abc";
String b = "abc";
a == b true;
變量a和變量b是同一個值。這不只是說它倆的值是一樣的,而是說就是同一個字符串對象。用Java的話來說就是a==b的結果是true。然而這個只對字符串以及小的整型或者長整型有效。其它的對象是不會被駐留的,也就是說如果你創建了兩個對象而他們的值是相等的,但他們並不是同一個對象。這個問題有時候很討厭,尤其是當你從某個持久化存儲中取出一個對象時。如果同一個對象你取了兩次,你當然希望最終取出的是同一個對象,不過實際上你取出的是兩份拷貝。換句話說你其實希望的是取出的是存儲中那個對象在內存裡面的同一個拷貝。有些存儲層是會做這樣的處理的。比如說JPA的實現就是遵循這個模式的,而別的情況可能你就得自己去做緩存了。
如何讓自己的對象,也好似上面string一樣呢;使用下面這個類吧
import java.lang.ref.WeakReference; import java.util.WeakHashMap; class WeakPool<T> { private final WeakHashMap<T, WeakReference<T>> pool = new WeakHashMap<T, WeakReference<T>>(); public T get(T object) { final T res; WeakReference<T> ref = pool.get(object); if (ref != null) { res = ref.get(); } else { res = null; } return res; } public void put(T object) { pool.put(object, new WeakReference<T>(object)); } }
希望本文所述對大家Android程序設計有所幫助。
Android 獲取手機信息應用信息:包名、版本號、版本名,手機是否有Root權限手機信息:手機屏幕寬和高、當前可用內存大小、總內存大小、IMEI號、IESI號、手機型號
上一篇博客,我們已經得到了文件夾列表,我們需要對文件列表子項添加事件,比如我們點擊的是文件,就執行 打開操作,點擊的是文件夾執行打開文件夾操作,遍歷文件清單,以此類推直到
MSM8909+Android5.1.1之bootloader---修改UART0時鐘頻率導致無法下載的問題解決 用高通的QFIL下載程序,正常下載界面後顯示如
前言我們在學習View的時候,不可避免會遇到事件的分發,而往往遇到的很多滑動沖突的問題都是由於處理事件分發時不恰當所造成的。因此,深入了解View事件分發機制的原理,對於