2010-12-17 61 views
8

我想在APK开始服务。我可以开始没有活动或接收器的服务吗?

我试过如下使用:

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <service android:name =".TestServcie"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </service> 
    </application> 

任何想法?
感谢

+0

所以我把它它不工作? (不是因为你拼写服务错误?)什么都发生了?顺便说一句,你是否计划任何反馈给用户该服务开始? – EboMike 2010-12-17 05:44:30

回答

11

你就是不行。

创建一个简单的活动,其启动该服务,只是提供了一些反馈给用户(告诉他们的服务已经启动,例如),并设置与主/ LAUNCHER原意,即活动。

+3

有人删除这个可怕的和无益的答案,并把另一个放在上面。 – Arijoon 2014-09-02 14:15:44

+0

@Arijoon:你如何提出“服务”开始?从Android v3.x开始,除非用户从启动程序手动启动应用程序,否则无法启动任何应用程序组件 - 这意味着启动一个“活动”。最重要的是,在没有用户许可的情况下启动应用程序组件将是一个糟糕的设计。另外,其他答案可能是正确的,但除非用户启动了“活动”(因此表明他们允许),否则它将失败。如果应用程序被手动停止并且不再手动重新启动或者应用程序安装在SD卡上,它也会失败。 – Squonk 2014-09-02 16:16:20

+1

安装后只需运行一次**。此后,您可以在启动时启动服务。你的答案的第一部分是正确的,但其余部分没有帮助。像Viber这样的许多服务在后台启动时运行,而无需询问用户。 – Arijoon 2014-09-03 08:14:14

29

你可以编写BroadcastReceiver并在意图调用后运行服务。例如在引导设备或其他您需要的意图之后。

<receiver android:name=".StartupReceiver"> 
    <intent-filter> 
    <action android:name="android.intent.action.BOOT_COMPLETED"/> 
    <category android:name="android.intent.category.HOME"/> 
    </intent-filter> 
</receiver> 
+0

我认为这个答案是正确的。它描述了如何在用户没有采取行动的情况下启动一项服务,我认为这就是作者所期待的。 – Undo 2013-01-13 22:32:48

+0

就像我Google一样,用户确实需要运行应用程序才能注册接收者。 – Pijusn 2013-01-17 08:53:01

+1

在这种情况下,接收者通过AndroidManifest.xml进行注册。换句话说,它们是在用户安装应用程序时注册的。 – Qlimax 2013-08-02 14:32:51

相关问题