我有一个 JobIntentService,如果满足某些条件,它必须启动我的 MainActivity 接收的 LocalBroadCastManager。
我是这样做的:
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager
.getInstance(MyJobIntentService.this);
[...]
localBroadcastManager.sendBroadcast(new Intent(
"com.durga.action.exit2"));
在我的主要活动中以这种方式定义了 LocalBroadCastManager:
LocalBroadcastManager mLocalBroadcastManager3;
BroadcastReceiver mBroadcastReceiver3 = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("com.durga.action.exit2")) {
[my code]
}
}
};
mLocalBroadcastManager3 = LocalBroadcastManager.getInstance(this);
IntentFilter mIntentFilter3 = new IntentFilter();
mIntentFilter3.addAction("com.durga.action.exit2");
mLocalBroadcastManager3.registerReceiver(mBroadcastReceiver3, mIntentFilter3);
到目前为止,我使用的类似代码使用的是服务而不是 JobIntentServices,但是从 API 26 开始,在某些我需要的情况下不再可能执行服务,因此我需要使用 JobIntentServices。
代码是这样的:
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager
.getInstance(MyService.this);
[...]
localBroadcastManager.sendBroadcast(new Intent(
"com.durga.action.exit2"));
我该怎么做才能让 JobIntentService 成功启动 LocalBroadcastManager?
我无法提供有关错误的更多详细信息,因为在模拟器上执行时它只是以“尽管代码处于 try, catch 块中,但应用程序已停止工作消息完成应用程序。这也基本上是不可能的,因为我的计算机资源用于在模拟器中调试 API 26 以获取更多信息,而且我没有具有 API 26 的物理设备。