当应用程序不在最近时在后台广播接收器

Broadcast receivers in background when app is not in recents

我正在尝试创建一个 toasts 电池电量 每当 电池电量发生变化时。我正在使用广播接收器并在 'ACTION_BATTERY_CHANGED' 中注册。仅当应用程序仍在最近(即应用程序未关闭)时,它在后台工作正常,但在应用程序关闭时它不起作用!

['ACTION_BATTERY_CHANGED' 当 BatteryLevel 改变时触发。]

代码如下:

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();

    }

};


}

一旦你的 MainActivity 被摧毁,你的 BroadcastReceiver 就会消失。这将发生:

  • 如果用户按下 BACK,或者
  • 如果用户通过其他方式离开(例如,按 HOME)并且您的进程终止

您似乎将 "the app is closed" 定义为当用户将应用滑出概览屏幕(最近的任务列表)时。这通常会终止应用程序的进程,因此您的 BroadcastReceiver 将在此时消失。