почему широковещательный приемник не работает постоянно внутри службы - PullRequest
1 голос
/ 21 января 2020

Мой приемник Broadcast работает должным образом внутри Службы, пока мое приложение не запустится, но сразу же перестанет работать, если я закрою свое приложение.

Здесь я хочу, чтобы мое приложение обнаружило изменение inte rnet и показало Toast каждый раз, кроме сообщений Toast, пока мое приложение не заработает.

Я запустил свой сервис в MainActivity и определил свою трансляцию внутри своего сервиса.

Inside onCreate в MainActivity-

Intent service = new Intent(MainActivity.this, LatestCallService.class);
    startService(service);

BroadcastReceiver внутри службы:

         BroadcastReceiver br = new BroadcastReceiver()
    {
        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(context, "Inside", Toast.LENGTH_SHORT).show();
 }
   }

  IntentFilter filter = new IntentFilter();
    filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
    _mContext = getApplicationContext();
    _mContext.registerReceiver(br, filter);

Пожалуйста, дайте мне знать, что не так с моим кодом.

Ответы [ 2 ]

1 голос
/ 23 января 2020

Я изменил свой код. Я смотрел службу переднего плана, после чего мой код работал, а приемник вещания также работал даже после закрытия приложения.

Служба переднего плана в основном Activity-

  Intent serviceIntent = new Intent(this, LatestCallService.class);
  serviceIntent.putExtra("inputExtra", "Foreground Service");
  ContextCompat.startForegroundService(this, serviceIntent);

Android Файл манифеста -

  uses-permission android:name="android.permission.FOREGROUND_SERVICE"

Таким образом, вы можете увидеть, работает ли ваша служба в фоновом режиме или нет. Надеюсь, это поможет!! :)

1 голос
/ 21 января 2020

термин «закрытие моего приложения» не является точным утверждением. Но я полагаю, вы имеете в виду, что вы провели пальцем вправо / влево на экране списка недавних задач.

После того, как onReceive () вернется, если у вас нет активности на переднем плане, и у вас нет запущенной службы, важность вашего процесса упадет до того, что Android document называет его "кэшированным процессом". Система Android прекратит их процессы в любой момент. Как только ваш процесс будет завершен, ваш приемник BroadCast тоже не будет работать.

хорошо, так что если, закрывая приложение, вы не имели в виду то, что я сказал, вы могли иметь в виду, когда переходите на экран приложения в настройках и нажав кнопку Force Stop , поэтому после принудительной остановки приложения ваше приложение никогда не запустится, пока пользователь или другое приложение не запустит ваше приложение!

***** *** Обновление с решением: вы можете найти решение для вашей проблемы в этом сообщение .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...