【发布时间】:2015-03-13 20:13:10
【问题描述】:
我正在为 Android 应用程序组件编写 service,我希望我的应用程序不会因为服务中的任何故障而崩溃。默认情况下,应用是否受到后台服务任何错误行为的保护。
【问题讨论】:
-
是的,如果您的应用服务崩溃,您的应用就会崩溃。但是如果你处理了异常,那么你的应用程序将从崩溃中保存
标签: android android-intent service
我正在为 Android 应用程序组件编写 service,我希望我的应用程序不会因为服务中的任何故障而崩溃。默认情况下,应用是否受到后台服务任何错误行为的保护。
【问题讨论】:
标签: android android-intent service
要回答您的问题,是的。如果您的应用程序中的服务崩溃,您的应用程序将被终止。
要提供解决方案,请不要让服务崩溃。我相信如果您可以阻止整个应用程序的其余部分,您可以防止服务崩溃。使用try-catch 或其他编程方法来处理异常。让我们知道代码中的任何特定内容是否需要帮助。
更新:我假设您使用的是“单进程模型”。
正如评论所暗示的,还有更多。如果该进程中的服务崩溃,您的进程 将被终止。如果主线程在同一进程下运行,您的应用程序将被终止。
默认情况下,Android 在整个应用程序中使用相同的进程。在这种情况下,如果发生任何异常(因为进程崩溃),应用程序将被终止。您可以为清单下的不同活动指定要运行的不同流程(如果您“真的”需要它)。
请参阅Process and thread 了解更多详细信息。
【讨论】:
Service 正在另一个进程中运行,则崩溃的Service 不会使运行 UI 的进程崩溃。此外,如果Service 正在使用工作线程,并且工作线程崩溃,这也不会终止进程。只有当主线程崩溃时才会终止进程。
一种选择是在与应用程序的其余部分不同的进程中运行您的 Service。如果您的Service 崩溃,这不会直接使您的应用程序崩溃(即:您的活动)。但是,您需要弄清楚一旦Service 崩溃,您的应用程序应该如何继续运行。当然,您的应用可以尝试重启Service 和/或采取其他措施。
为此,只需将其添加到清单中的 <service> 声明中:
android:process=":remote"
【讨论】: