我在一个Application里写了一个后台运行的Service,主要功能是计时并发出通知,在启动应用程序的时候用startService启动服务。
现在通过调试发现,Service的功能没有问题,但是只有在应用程序中启动服务时它才有效,退出Activity之后,虽然在系统设置里的“正在运行的服务”里还有它,但是已经不再按时发出通知了有什么办法能让服务一直在后台有效运行?还有一个问题是,我希望这个服务可以开机自动启动,于是写了一个类继承BroadcastReceiver,在onReceive(context, intent)里判断接收到的intent的Action,如果是"android.intent.action.BOOT_COMPLETED"就startService。在AndroidManifest.xml里加了以下代码:        <receiver
         android:name=".BootBroadcastReceiver"
         android:label="@string/app_name">
         <intent-filter>
         <action android:name=
         "android.permission.RECEIVE_BOOT_COMPLETED">
         </action>
         <category android:name=
         "android.intent.category.LAUNCHER">
         </category>
         </intent-filter>
        </receiver>不过好像没有用。求指点!

解决方案 »

  1. http://www.cnblogs.com/ssqjd/archive/2009/02/08/1386460.html
    自己对比一下
      

  2. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>是不是没有添加权限?
      

  3. 回答问题1:
    不按时发出通知不代表服务已经停止,或许是你发出通知的代码块有问题呢?请你确认你的服务已经停止(定时打印log手段),然后大家才能帮你定位问题。
      

  4. 多谢各位,问题已经解决了……
    第一个问题好像是我的Service的代码有些bug,第二个问题是AndroidManifest的action name写错了……
      

  5. 如何让service 一直在后台运行呢?  退出activity之后
      

类似问题 »