5

我已经看到许多 android 服务示例,其中 return START_STICKY 用于在启动时启动应用程序,但无论如何我可以将其用于 IntentService。我了解 Service 方法在主 UI 线程上运行,而 IntentService 作为单独的线程运行。

  1. 但是它们究竟是如何被调用的,为什么不能在启动时启动 IntentService。由于 IntentService 在单独的线程上运行,因此如果我没有磨损,我们可以对其进行更多控制。

  2. 我尝试在 IntentService 中使用 onStartCommand,但我的应用程序在启动时崩溃,即使它在手动启动时运行良好。我们可以覆盖 IntentService 中的 onStartCommand 吗?

有人可以帮我弄这个吗 ?

4

1 回答 1

8

在启动时运行并且START_STICKY彼此无关 -START_STICKY是一个标志,用于确定如果您的服务被 Android 杀死应该发生什么。

IntentService旨在处理传入的意图(通过handleIntent)并在之后立即停止。从IntentService 的源代码中可以看出,它已经得到了onStartCommand适当的处理。

只要你要求

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

并在您的IntentService

<intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
    <action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>

然后您的服务将在启动完成时被调用。

(一个例外是如果您的应用程序按照安装位置安装在 SD 卡上)

于 2014-07-02T17:38:15.713 回答