當WeakReference被移除時,有沒有辦法提醒?我需要添加一個Android上下文到一個實例,我將它添加爲一個WeakReference,然後當/如果這個被刪除,我想處理一些事情?我認爲我在某個地方閱讀了這篇文章,但是因爲我不記得在哪裏,並且沒有找到它,所以我什麼都沒給:(當WeakReference被移除時的回調
3
A
回答
2
弱引用(wr)沒有提供回調,如果您需要正確的呼叫返回時,對象的最終化方法可以被重寫,以便在垃圾收集時執行某些操作(gc'd)。
wr提供的是一個referenceQueue(rq),它基本上是一個引用列表, 「T被gc'd。你在參考書中的構造函數中附加的ReferenceQueue。
ReferenceQueue<Drawable> rq = new ReferenceQueue<Drawable>();
WeakReference<Drawable> wr = new WeakReference<Drawable>(dr, rq);
一旦我們繪製的gc'd,應該的ReferenceQueue CONT在wr。
do{
Reference<?> ref = rq.poll(); //this should be your weak reference
if(ref == null) break;
ref.get(); //Should always be null, cause referent is gc'd
// do something
}while(true);
我們可能把WR的地圖,因爲我們沒有告訴什麼是「WR」的任何方式是,當我們把它找回來,從RQ - 畢竟其referrent爲空。它的意義只在於它指的是什麼,而這個意義不再存在,所以我們需要記錄這個意義,所以我們把它放在地圖上,關鍵是我們想採取的一些行動,甚至可能只是從地圖上刪除弱引用本身。
相關問題
- 1. 當addAction被調用時移除通知?
- 2. 當removeChild(el)被調用時,el.onclick被移除了嗎?
- 3. 當邊框被移除時div縮小
- 4. 當uitableviewcell被破壞時的iOS回調
- 5. 當Z3_ast對象被刪除時是否有可用的回調?
- 6. 當標記被移除時,我如何移除InfoWindow?
- 7. 當節點被移除或被添加時,TreeView的事件
- 8. 當鍵盤被解除時,onSubmitEditing被調用兩次
- 9. 當元素被移除時,可滾動的div容器消失
- 10. 爲什麼要移除列表<Entity>當SubmitChanges()被調用時不反射?
- 11. PayPal返回的URL沒有被調用,除非當payer_status =驗證時?
- 12. 何時使用WeakReference?
- 13. 當移動構造函數被調用
- 14. SFSB被移除
- 15. 當OrientationEventListener被禁用時,onOrientationChanged()被調用
- 16. 當1列被移除時Div變得太寬
- 17. 當SD卡被移除時強行關閉
- 18. 當物品被移除時,Android CAB強制溢出菜單
- 19. 當項目被移除時,Spark列表不顯示選擇
- 20. 當對話框被解除時向前移動焦點
- 21. 當alert()被移除時,代碼表現奇怪
- 22. ActiveMQ:當持久訂閱者被移除時,我怎麼知道?
- 23. 當MetroTiles被移除時,MetroPanel滾動位置不重置
- 24. 當div被移除時,元素不顯示
- 25. 當其他div被移除時DIV居中
- 26. Kendo multiselect,當物品被移除時觸發事件
- 27. SpriteKit:當操作被移除時運行代碼或塊?
- 28. 當孩子被孤兒移除時EntityListener不工作
- 29. #Dart:當jquery將事件觸發到Dart回調方法時,div被刪除
- 30. 當邊框被刪除時div的大小調整
謝謝,這看起來像我可以使用的東西 –