Не удается выполнить LocalBroadcastManager из JobIntentService - PullRequest
0 голосов
/ 26 октября 2018

У меня есть JobIntentService, в котором при соблюдении определенных условий он должен запустить LocalBroadCastManager, полученный моим MainActivity.

Я делаю это следующим образом:

 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.

...