START_STICKY用于IntentService

5
我看过很多Android Service的例子,其中使用了START_STICKY来启动应用程序,但是否有任何方法可以将IntentService与之相同?我知道Service方法在主UI线程上运行,而IntentService是在单独的线程上运行。
但它们到底如何被调用,为什么无法在启动时启动IntentService?由于IntentService在单独的线程上运行,因此如果没有错误,我们可以更好地控制它。
我尝试在IntentService中使用onStartCommand,但是即使在手动启动时它也可以正常工作,但在启动时我的应用程序会崩溃。我们可以重写IntentService中的onStartCommand吗?
有人能帮助我解决吗?
1个回答

8

在启动时运行和START_STICKY没有任何关系- START_STICKY 是一个标志,用于确定如果您的服务被Android杀死应该发生什么。

IntentService 旨在处理传入的意图(通过handleIntent)并立即停止。如IntentService源代码中所示,它已经适当地处理了onStartCommand

只要您正在请求

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

并且在你的IntentService上有正确的intent-filter:

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

然后您的服务将在引导完成时被调用。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接