2013-07-25 143 views
18

在Android應用程序類中,您可以註冊/取消註冊ActivityLifecycleCallbacks,這允許您在一個地方(如果您願意的話)監視應用程序中的Activity生命週期事件。什麼是取消註冊Activity生命週期回調的正確方法?

哪裏可以撥打unregisterActivityLifecycleCallbacks?我在註冊onCreate,並認爲onTerminate將是適當的位置剛剛從方法的名字,但文件說的onTerminate()

這種方法是用在模擬過程環境。它不會在生產Android設備上調用 ,其中通過簡單地殺死進程來刪除進程 ;沒有用戶代碼(包括此回調)在執行此操作時執行 。

我沒有看到任何其他方法在Application類中進行'關閉'類型的回調。你甚至需要取消註冊?

+0

我真的很好奇你想要達到的目標。關於取消註冊,你不需要,因爲如果你的Application類正在死亡,你的進程就會死掉,所以你可能會在super()調用之後取消註冊,在你的進程死亡之前幾微秒。我想,註銷的目的是讓你在運行時改變行爲。 – Simon

回答

18

Simon對此是正確的。 registerActivityLifecycleCallbacks不需要與unregisterActivityLifecycleCallbacks匹配的呼叫。如this SO question中所述,當您的應用程序被殺時無法檢測到。所以沒有註冊回調的「合理」位置。即使有,您的Application實例也會在後被殺害,最後一個Activity操作發生,而您的Application殺死mActivityLifecycleCallbacks列表,該列表保留了對您的回調的引用。

TL; DR - 不必擔心撥打unregisterActivityLifecycleCallbacks,如果您想在Application的正常生命週期中停止跟蹤Activity操作,那麼請不要擔心。

相關問題