在我的Android應用程序中,我執行少量資源密集型操作。我必須在應用程序被殺之前隨時關閉/清除這些內容。據我所知onStop()
/onDestroy()
生命週期方法不保證在殺死應用程序期間執行。因此,在這些方法中進行關閉/清理操作是不可靠的。 Android爲實現此功能提供了哪些最佳選擇?謝謝。在殺死應用程序之前執行強制性清理操作
回答
您應該使用而不是onStop, onDestroy
。這是保證被稱爲。
我的建議是在你的主要活動上重寫onDestroy()以在應用程序被銷燬時執行代碼,或者在用戶退出應用程序時使用onStop()來執行代碼。
onDestroy()將在活動被銷燬前被調用。它可以被稱爲活動正在完成(某人稱爲finish()),或者因爲系統銷燬活動的實例以節省空間。這兩種情況可以通過使用isFinishing()方法來區分。
另一方面onStop()在用戶不再可見活動時調用。這可能是因爲它正在被銷燬,或者因爲另一個活動已被恢復。如果活動返回與用戶交互,或者如果此活動正在消失,則由onDestroy()繼承,則可能由onRestart()跟隨。
@Override
protected void onStop() {
super.onStop();
// The activity is no longer visible i.e is it stopped now
}
@Override
protected void onDestroy() {
super.onDestroy();
//It is about to destroyed
}
'onStop()'和'onDestroy'不保證運行到最後。他們可能只執行部分方法。殺死該應用程序後,Android應用程序進程可能隨時終止。 – Omkar
如果在onCreate()方法內調用finish(),onPause()和onStop()將不會被調用。例如,如果您在onCreate()過程中檢測到錯誤並由此調用finish(),則可能會發生這種情況。但是,在這種情況下,您希望在onPause()和onStop()中執行的任何清理操作都不會執行。
雖然onDestroy()是活動生命週期中的最後一次回調,但值得一提的是,此回調可能並不總是被調用,因此不應該依賴它來銷燬資源。最好在onStart()和onResume()中創建資源,並分別在onStop()和onPause中銷燬它們。
有關活動生命週期的更多信息,請參閱Android開發人員指南。 https://developer.android.com/training/basics/activity-lifecycle/starting.html
- 1. 防止強制殺死應用程序
- 2. 由DefaultHttpClient執行的殺死應用程序(killProcess)執行執行
- 3. iPhone應用程序在它結束之前被殺死加載
- 4. OnPause狀態強制殺死Android應用程序
- 5. 殺死運行應用程序
- 6. 在殺死進程之前保存gmon.out
- 7. Java:殺死執行數據庫操作的線程
- 8. Android:操作系統殺死它時的Autorestart應用程序
- 9. 在退出Java應用程序之前進行清理
- 10. 強制Windows操作系統在執行應用程序之前加載整個應用程序可執行文件(.exe)
- 11. C#如何殺死使用Process.Start()強制殺死我的程序時運行的進程
- 12. 如何在執行其他操作之前強制用戶填寫表單?
- 13. Jmeter清理/強制在完全執行組之前不要中止
- 14. 在Android中殺死應用程序
- 15. 谷歌應用程序引擎,Java:在開發服務器死亡之前執行操作
- 16. Elasticsearch - 強行殺死分片
- 17. 殺死線程強行C++的Win32
- 18. 控制檯應用程序在執行回調之前退出
- 19. 如果操作系統殺死了應用程序,處理應用程序活動
- 20. 殺害互操作的應用程序
- 21. 在iOS 4.2殺死應用程序之前單擊調試5秒鐘
- 22. 在觸發事件處理程序之前執行點擊操作
- 23. 在異常處理之前強制執行函數(JAVA)
- 24. 在操作之前或之後執行ASP.Net MVC控制器屬性嗎?
- 25. iOS - 用按鈕殺死應用程序?
- 26. 在運行.NET自定義操作之前強制安裝GAC?
- 27. 當應用程序被強制殺死時開始播放音頻
- 28. 是否存在強制執行操作的C#屬性?
- 29. 殭屍殺死我的應用程序
- 30. 應用程序殺死onBackPressed android
您可以使用'finally'塊關閉您的資源。 – Rustam
在哪個生命週期方法中放置'finally'塊? – Omkar
https://docs.oracle.com/javase/tutorial/essential/exceptions/finally.html – user1506104