【发布时间】:2012-09-21 23:06:38
【问题描述】:
我正在开发一个应用程序,我想添加一个崩溃恢复功能,重新启动我的应用程序。我没有写任何与此相关的代码。 我的想法是启动一个监控状态的服务。基于这种方法,问题是因为服务是从我的应用程序启动的,如果应用程序死了,它就会死。 是否可以从我的应用启动服务并独立运行以监控我的应用并重新启动它?
【问题讨论】:
我正在开发一个应用程序,我想添加一个崩溃恢复功能,重新启动我的应用程序。我没有写任何与此相关的代码。 我的想法是启动一个监控状态的服务。基于这种方法,问题是因为服务是从我的应用程序启动的,如果应用程序死了,它就会死。 是否可以从我的应用启动服务并独立运行以监控我的应用并重新启动它?
【问题讨论】:
有几种方法可以解决您描述的问题。也许最简单的方法是为您的项目提供一个自定义的 Application 类,并在其 onCreate() 方法中调用 Thread.setDefaultUncaughtExceptionHandler(this); 将您的类指定为默认异常处理程序。这将要求您覆盖将在您崩溃时调用的public void uncaughtException(Thread t, Throwable e),并且您可以安排重新启动。
如果你真的想要在你的进程之外监控一些东西,一种方法是在你的应用程序中定义一个服务,它被定义为有自己的进程;这是通过 AndroidManifest 属性完成的。
另一个选择是使用 Android AlarmManager,因为它由系统处理并可以重新启动您的应用程序。
【讨论】:
【讨论】: