【问题标题】:Can I start a service without activity or receiver?我可以在没有活动或接收者的情况下启动服务吗?
【发布时间】:2010-12-17 05:38:42
【问题描述】:

我想在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>

有什么想法吗?
谢谢

【问题讨论】:

  • 所以我认为它不起作用? (不是因为你拼错了Service?)有什么事情发生吗?顺便说一句,您是否计划向用户提供服务启动的任何反馈?

标签: android service


【解决方案1】:

您可以编写一个 BroadcastReceiver 并在收到 Intent 后运行 Service。例如在设备启动或您需要的其他 Intent 之后。

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

【讨论】:

  • 我认为这个答案是正确的。它描述了如何在没有用户操作的情况下启动服务,我认为这就是作者想要的。
  • 就像我 Google 一样,似乎用户实际上必须运行应用程序才能注册接收者。
  • 在这种情况下,接收者是通过 AndroidManifest.xml 注册的。换句话说,它们是在用户安装应用程序时注册的。
  • StartupReceiver 是什么?
【解决方案2】:

不,你不能。

创建一个简单的 Activity 来启动服务并简单地向用户提供一些反馈(例如告诉他们服务已经启动)并使用 MAIN/LAUNCHER 意图设置该 Activity。

【讨论】:

  • 有人删除了这个可怕且无用的答案,并将另一个放在上面。
  • @Arijoon : 你建议Service 是如何启动的?从 Android v3.x 开始,除非用户从启动器手动启动应用程序,否则无法启动任何应用程序组件 - 这意味着启动 Activity。最重要的是,未经用户许可启动应用程序组件将是一个糟糕的设计。此外,另一个答案可能是正确的,但除非用户已启动Activity(从而表明他们给予许可),否则它将失败。如果应用程序被手动停止并且没有再次手动重新启动,或者应用程序安装在 SD 卡上,它也会失败。
  • 安装后只需要运行一个Activity一次。此后,您可以在启动时启动该服务。您的答案的第一部分是正确的,但其余部分没有帮助。许多服务(如 Viber)在后台启动时运行,无需询问用户。
  • @Arijoon :如果用户使用 Settings -> Apps 手动停止应用程序,它将 NEVER 再次启动,直到用户使用 Activity 手动启动应用程序已注册为 MAIN / LAUNCHER Activity。此外,如果您查看原始问题标题,它会显示“......没有活动或接收者?另一个答案说使用BroadcastReceiver,它没有以它的方式回答问题被问到 - 这就是为什么我说不使用 ActivityBroadcastReceiver 就无法完成。
  • @Arijoon :请仔细阅读原始问题。使用他们发布的 AndroidManifest 来执行 OP 要求的操作是不可能的。此外,正如我所说,OP 想知道它是否可以“在没有活动或接收者的情况下”完成。此外,如果您真的觉得我的回答没有帮助、不正确​​或垃圾邮件,请随时对其投反对票和/或标记它以供版主注意将其删除。我的答案出现在另一个答案之上的原因是 OP 接受了它——没有什么能阻止 Stack Overflow 用户向下滚动查看其他答案——这就是 Stack Overflow 的工作原理。
猜你喜欢
  • 2015-03-07
  • 2018-06-19
  • 2016-06-27
  • 1970-01-01
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多