什麼是通知執行一些後臺處理的片段的託管活動的重建方法,它完成了什麼。假設碎片正在運行一些正在主循環之外工作的線程。在片段中通知處理信息的活動
一個簡單的回調不會做,因爲:
- 的活動可以被分離,由於屏幕旋轉,這將導致到一個NullPointerException。
- 來自活動內部的投票只是愚蠢的
- 只附加調用該活動一次,並讓每個onCreate調用後(即由於屏幕旋轉)檢查活動。
- 我目前的工作,但它似乎是錯誤的:每當片段被連接,它會檢查工作是否完成,並通過回調通知活動。如果片段完成工作,它也會回調活動(如果附加)。
爲什麼我認爲是錯的?因爲我有一些非常難看的方法來檢查片段是否被連接,並且如果工作完成以便可能調用回調。當在片段中執行一些工作期間引發異常並且活動被分離時,這變得非常愚蠢。如果android決定在同一時刻調用onSaveInstance,則必須將該Exception放入Bundle中,並在Activity和fragment從保存狀態重新創建時稍後傳遞。此外,我可以遇到這樣一種情況,即一次活動將收到兩次相同的回調(一次是檢查碎片,另一次是碎片被連接;這可能會在應用程序保存並恢復時發生)
這會生成在我的選擇中,許多代碼可能會更清楚,如果活動不會分離。這就是爲什麼我希望我做錯了什麼,希望有人能爲我提供更好的解決方案。
儘管我不知道你到底想要實現什麼。也許您的答案是將服務實現爲「您的主要活動」,這樣可以確保您的服務始終處於運行狀態,並且您可以隨時通過服務通知服務,從片段完成某些工作。 – Mario
片段運行時間爲5秒。我不想爲每一個做一些背景工作的片段都提供服務。 – Chris
您不需要爲每個片段提供服務,而只需要每個片段通知的服務。 – Mario