无法从JobIntentService执行LocalBroadcastManager

时间:2018-10-26 16:04:00

标签: android localbroadcastmanager jobintentservice

我有一个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?

我无法提供有关错误的详细信息,因为在模拟器上执行时,它仅以“应用已停止工作的消息”完成了应用  尽管代码处于尝试状态,但是catch块仍然存在。由于我的计算机资源无法在模拟器中调试API 26以获取更多信息,而且我没有具有API 26的物理设备,因此这也是基本不可能的。

0 个答案:

没有答案