【发布时间】:2018-10-26 20:33:29
【问题描述】:
我的 BroadcastReceiver 似乎没有收到它正在侦听的意图。
我正在启动一个必须一直运行的后台服务。每当服务被终止时,它都会向我的 BroadcastReceiver 发送一个意图,然后它会重新启动服务。
这是我服务的onDestroy:
@Override
public void onDestroy() {
Log.i(TAG, "onDestroy");
sendBroadcast(new Intent("com.myapp.app.RESTART_SERVICE"));
stoptimertask();
super.onDestroy();
}
这是我的广播接收器:
public class RestarterBroadcastReceiver extends BroadcastReceiver {
public RestarterBroadcastReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "Service stopped, restarting...");
context.startService(new Intent(context, ActivityRecognitionService.class));
}
}
还有 Android Manifest 的重要部分:
<receiver
android:name=".RestarterBroadcastReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.myapp.app.RESTART_SERVICE"/>
</intent-filter>
</receiver>
为什么我的 BroadcastReceiver 没有收到意图?
【问题讨论】:
-
@kelalaka 在哪里,在广播课上?内容应该是什么?
-
关于活动。 onDestroy 可能永远不会被调用。 OnDestroy
-
但是正如你所看到的,我正在记录“Service onDestroy”并且我看到了这个。但我没有进入“服务停止,重新启动服务......”
-
在启动服务时使用 START_STICKY 标志,以使其在停止时自行重启。
-
@daka 已经这样做了,服务仍然被杀死。
标签: android android-intent service broadcastreceiver android-manifest