我開發一個應用程序,我想提出一個崩潰恢復功能,重新啓動我的應用程序。我沒有寫任何與此相關的代碼。 我的想法是啓動監視狀態的服務。基於這種方法,問題是因爲服務是從我的應用程序開始的,如果應用程序死亡它將會死亡。 是否可以從我的應用程序啓動服務,並獨立運行它來監視我的應用程序並重新啓動它?崩潰恢復Android應用
回答
有幾種方法可以解決你所描述的問題。雖然也許最簡單的是爲您的項目提供自定義Application
類,並在其onCreate()方法,調用Thread.setDefaultUncaughtExceptionHandler(this);
你的類指派默認的異常處理程序。這將要求您覆蓋public void uncaughtException(Thread t, Throwable e)
,這將在您崩潰時被調用,並且您可以安排重新啓動。
如果你真的想你外面過程監控的東西的東西,一種方法是在你的應用程序中的服務,它被定義爲具有其自身的進程;這是通過AndroidManifest屬性完成的。
另一種選擇是使用Android AlarmManager,作爲被系統處理,可以重新啓動應用程序。
-1:此答案與應用程序崩潰/重新啓動無關。 – mah
它與運行將檢查應用程序狀態的服務有關。爲什麼AlarmManager比服務更好?並有可能在應用 – marwinXXII
我沒說AlarmManager多個線程比服務好,我說這是另一種選擇 - 然而,由於應用程序可以在不破壞未決報警,最好是崩潰。更重要的是,所問的問題不是如何啓動這樣的服務(BOOT_COMPLETED是一個答案),而是關於可能性。你的答案假設他想要在設備啓動時啓動,但他從未說過。他只表示他希望應用程序崩潰恢復; BOOT_COMPLETED表明壽命比它應該長得多的東西,浪費資源,並減慢人們的手機。 – mah
- 1. 應用程序與SearchView崩潰恢復
- 2. 應用程序中的崩潰恢復
- 3. 應用程序在恢復時崩潰
- 4. 活動恢復後Android SoundBoard崩潰
- 5. Android webview崩潰從另一個應用程序恢復
- 6. Android應用程序崩潰了,無論如何要恢復?
- 7. 恢復崩潰的InputStream
- 8. MySQL ...啓動崩潰恢復
- 9. eclipse從崩潰中恢復
- 10. Android應用崩潰
- 11. Android應用崩潰
- 12. Cordova(PhoneGap)InAppBrowser在應用程序從後臺恢復時崩潰
- 13. ios應用程序崩潰:無法及時恢復
- 14. 測試QTP的應用程序崩潰恢復方案
- 15. 如何防止應用程序/遊戲在恢復後崩潰
- 16. 恢復後應用程序崩潰沒有異常
- 17. ImageView.image =零應用程序休眠/恢復後崩潰
- 18. cocos2dx應用程序在恢復活動時崩潰
- 19. 應用程序崩潰時彈簧liquibase恢復
- 20. W3WP崩潰和如何恢復應用程序
- 21. 當從後臺恢復應用程序時,RestKit崩潰
- 22. 應用程序崩潰時的文件恢復C#
- 23. CALayer無效的崩潰在恢復
- 24. 系統崩潰後恢復SSH會話
- 25. 從核心轉儲崩潰中恢復
- 26. advertisingIdentifier崩潰 - 未能及時恢復
- 27. 如何恢復崩潰的上傳?
- 28. WPF:MessageBox.Show在Window.OnClosing崩潰恢復窗口
- 29. Joomla文件在崩潰後恢復
- 30. IE8崩潰標籤恢復日誌?
AlarmManager我相信如果我的應用程序安排好了,它可能是一個解決方案。使用Thread.setDefaultUncaughtExceptionHandler我可以使用,如果我集中在一個地方異常處理。對我來說使用服務是個好主意:我發現這個[link](http://stackoverflow.com/questions/7254720/how-to-restart-an-activity-automatically-after-it-crashes?rq=1 )有用。但我真的很想聽聽其他方法。 – learner
在您的用例中使用AlarmManager會像這樣:當您的應用程序啓動時,您會延遲安排鬧鐘。當該警報觸發時,您驗證應用程序正在運行(或者如果需要,重新啓動它),並重新安排下一次警報。當您的應用程序正常結束時,您會刪除當前的鬧鐘。這個用例只適用於應用程序啓動時啓動的非計劃模型,並在應用程序完成後立即停止(因爲您停止它)。 – mah