我做了合理的研究,找不到我需要的答案。Android - Firebase - 我是否需要刪除每個單一的偵聽器?
我所知道的:當我附上ValueEventListener到數據庫的參考,我知道我需要在以後進行刪除(現在發現硬盤的方式與一些海量內存泄漏
我。不知道:我是否還需要卸下所有其他聽衆(這是包括火力地堡數據庫,存儲和驗證,這三個API的我使用)
例子:
UploadTask uploadTask = ref.putFile(uploadFile);
uploadTask.addOnFailureListener(new OnFailureListener() {
//@Override code here
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TakeSnapshot>() {
//@Override code here
}).addOnProgressListner(new OnProgressListner<UploadTask.TakeSnapshot>() {
//@Override code here
};
我認爲這足以向你展示我的意思。這是我的實際代碼目前的結構。
問題:
- 我是否需要刪除所有這些聽衆以防萬一 被終止的活動(系統決策,手機模具,等等)是 回調之前發生?
- 我可以將它們以某種方式捆綁在一起,並立即終止它們全部三個,因爲我有我的代碼中的30個這樣的代碼,真的不覺得 像重構所有它,以便將所有這些監聽器 分配給變量JUST所以我可以一遍又一遍地將它們傳遞給 「removeBlahBlahBlahListener(listenerVariable)」。
- 稍微偏離主題,但是,我懶得將我的所有代碼從 onCreate移到onStart ...對我來說是不好的練習,我可以刪除所有這些 聽衆,完成一切,調用finish()(或任何這是 殺死一個活動,但我想這不能保證),並從頭開始重新創建活動? 這是一個小的簡單的應用程序,所以重新創建活動 的開銷並不大。只是好奇什麼是「正確的」。
我想這只是由於計劃不周和缺乏知識(我只是爲了好玩而不是爲了工作而編程),所以如果我必須走艱難路線,我想這是一個學習體驗,對?
我很困惑。您展示的示例代碼是Firebase Storage的進度監聽器。但是你的文本顯然是關於數據庫的。你有哪個問題? –
對不起弗蘭克的困惑。我本可以更清楚。我正在使用來自Firebase的兩個API(數據庫和存儲),並且都有聽衆。我的問題確實是爲了適用於我所想的。我猜想一般Firebase聽衆以及他們做什麼時都不需要拆卸/移除。例如,有些FB監聽器在活動移出視圖時會自行處理,或者每個監聽器(數據庫和存儲)在onPause/Stop/Destroy之後都會繼續監聽。 – Ryan