1

我有一个 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 的物理设备。

4

0 回答 0