Широковещательные приемники в фоновом режиме, когда приложение не в последних - PullRequest
1 голос
/ 09 марта 2019

Я пытаюсь создать приложение, которое подает уровень заряда батареи каждый раз, когда уровень заряда батареи изменяется. Я использую широковещательный приемник, который зарегистрирован как ACTION_BATTERY_CHANGED. Он прекрасно работает в фоновом режиме, только когда приложение все еще находится в режиме ожидания (то есть приложение не закрыто), но не работает, когда приложение закрыто !

[ACTION_BATTERY_CHANGED 'срабатывает при изменении уровня батареи.]

Ниже приведен код:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //registering the reciever.
    this.registerReceiver(this.mBatInfoReciever,new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

}
private BroadcastReceiver mBatInfoReciever = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        int level = intent.getIntExtra("level",0);
        /*To get the Battery Level.*/

        Toast t=Toast.makeText(getApplicationContext(),String.valueOf(level),Toast.LENGTH_LONG);
        t.show();

    }

};


}

1 Ответ

0 голосов
/ 09 марта 2019

Как только ваш MainActivity уничтожен, ваш BroadcastReceiver уходит. Это произойдет:

  • Если пользователь нажимает НАЗАД или
  • Если пользователь уходит другим способом (например, нажимает HOME) и ваш процесс прекращается

Похоже, вы определяете «приложение закрыто», когда пользователь удаляет приложение с экрана обзора (список последних задач). Это обычно завершает процесс приложения, поэтому ваш BroadcastReceiver исчезнет в этот момент.

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