如何在片段之间保持服务运行

时间:2015-03-25 20:29:48

标签: android android-service

我有多个活动扩展了基础FragmentActivity类。其中一项活动是运行需要始终可用的服务。现在当我在活动之间切换时,会调用Activitiy的onDestroy()。我在这里取消绑定服务吗?我不希望解除绑定,因为我的服务正在运行,我希望它继续。

另一件事是我有一个从BLE(蓝牙低功耗)设备接收数据的接收器,该服务用于BLE连接。我是否取消注册接收器?我不想这样做,因为我希望这个接收器在后台继续。

编辑:

    class MyActivity{


           private final BroadcastReceiver mGattUpdateReceiver = new BroadcastReceiver() {
           }

编辑:

在清单中:

     <receiver android:name="MyReceiver" >
           <intent-filter>
            <action   android:name="com.directed.carcookie.mGattUpdateReceiver" />
        </intent-filter>
    </receiver>

错误:导出的接收器不需要许可?

2 个答案:

答案 0 :(得分:0)

我真的不知道你要用Service完成什么,因为你没有提供大量信息,但是对于长期后台服务,为什么不使用IntentService?< / p>

如果您使用常规Service您可能正在使用onBind()方法。为什么不使用startService()

例如:

Intent serviceIntent = new Intent(getActivity(), MyIntentService.class);
getActivity().startService(serviceIntent)

如果这两种方法不适合您,请提供更多信息

答案 1 :(得分:0)

如果您从Service延长并使用Context.startService()而希望自己的服务继续使用,只需在START_STICKY中返回onStartCommand即可。这样,只有在您明确呼叫stopService()stopSelf()时,您的服务才会停止。

来自docs

  

对于已启动的服务,他们可以决定运行另外两种主要操作模式,具体取决于它们从onStartCommand()返回的值:START_STICKY用于根据需要显式启动和停止的服务,而START_NOT_STICKY或START_REDELIVER_INTENT用于在处理发送给它们的任何命令时应保持运行的服务。