2017-07-27 40 views
0

境界Java文檔處理建議一個領域實例到Activity/生命週期使得境界打開關聯/關閉創建Activity/Fragment時/銷燬。境界的生命週期 - 閉合/無效的情況下,在機器人

假設Activity上的用戶交互觸發了一堆基於鏈接的異步/基於回調的代碼,最終對與Activity關聯的領域實例發出讀/寫操作。

如果用戶交互後立即退出活動和領域實例被關閉的Activity'sonDestroy的一部分,這將是一個很好的方法,以確保交易/查詢在封閉的情況下失敗默默地因爲它是一個嵌套的回調鏈。

在調用任何方法之前檢查領域實例是否關閉/有效是很乏味的。

同時,打開領域實例並關閉它只是爲了寫/讀東西可能是昂貴的。

什麼是避免像這樣的崩潰的好方法?

+0

'一串鏈接異步/基於回調的代碼'應該由一個可以獲得它自己的Realm實例引用的backround服務處理。 '最終發出與活動相關的領域實例的讀/寫'活動中註冊的領域觀察者將對領域中的數據更改做出反應。如果活動處於活動狀態,則會在UI中顯示更改。如果它死了,沒人關心。 –

+0

並非每個領域的訪問都可以委託給後臺服務。 – letronje

+1

你將不得不解釋你爲什麼這麼想。爲什麼它不能在你的情況下工作?你會從所有線程訪問相同的底層數據。 –

回答

1

我相信這裏的基本問題是:「我如何防止死元件回調?」。答案在Realm文檔中,here:當組件退出時,您必須取消註冊偵聽器(,onStoponDestroy)。

如果我理解正確的問題,是否開放領域問題是紅鯡魚。聽衆必須註銷。

+1

個人而言,我更喜歡在'onDestroy'中取消註冊,但是很好的答案。 – EpicPandaForce