Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android R中,后台服务在节电模式下停止_Android_Battery_Background Service_Battery Saver - Fatal编程技术网

在android R中,后台服务在节电模式下停止

在android R中,后台服务在节电模式下停止,android,battery,background-service,battery-saver,Android,Battery,Background Service,Battery Saver,我写了一个android应用程序,通过改变电池电量来检查电池电量,当电量达到一定值时发出警报。 我在我的应用程序中使用了广播接收器和后台服务。 它在所有android版本中都能正常工作,但在android R中,当电池节电模式打开时,服务停止。 我在几个不同android版本的模拟器和真实设备上测试了我的应用程序,运行正常,但在android R中存在问题。 有没有办法阻止服务停止 我的服务级别: public class BatService extends Service { priv

我写了一个android应用程序,通过改变电池电量来检查电池电量,当电量达到一定值时发出警报。 我在我的应用程序中使用了广播接收器和后台服务。 它在所有android版本中都能正常工作,但在android R中,当电池节电模式打开时,服务停止。 我在几个不同android版本的模拟器和真实设备上测试了我的应用程序,运行正常,但在android R中存在问题。 有没有办法阻止服务停止

我的服务级别:

public class BatService extends Service {

  private BatReceiver receiver = new BatReceiver();

  @Override
  public void onCreate() {
    super.onCreate();
  }

  @Override
  public int onStartCommand(Intent intent, int flags, int startId) {

    BatteryLevelAsync async = new BatteryLevelAsync();
    async.execute();

    return START_STICKY;
  }

  @Override
  public void onDestroy() {
    unregisterReceiver(receiver);

    super.onDestroy();
  }

  private class BatteryLevelAsync extends AsyncTask<Void,Void,Void>
  {
    @Override
    protected Void doInBackground(Void... voids) {
      registerReceiver(receiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
      return null;
    }
  }

  @Override
  public IBinder onBind(Intent intent) {
    return null;
  }
}
公共类BatService扩展服务{
专用蝙蝠接收器=新蝙蝠接收器();
@凌驾
public void onCreate(){
super.onCreate();
}
@凌驾
公共int onStartCommand(Intent Intent、int标志、int startId){
BatteryLevelAsync async=新的BatteryLevelAsync();
execute();
返回开始时间;
}
@凌驾
公共空间{
未注册接收人(接收人);
super.ondestory();
}
私有类BatteryLevel异步扩展异步任务
{
@凌驾
受保护的空位背景(空位…空位){
registerReceiver(接收器,新的意向过滤器(意向.行动\电池更换));
返回null;
}
}
@凌驾
公共IBinder onBind(意向){
返回null;
}
}

为了优化电池,谷歌对安卓8进行了限制。 即使在使用服务时,这也会限制后台工作。 我找到了解决这个问题的方法:使用PowerManager

添加对清单的权限:

<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />

谷歌已经对安卓8进行了限制,以优化电池。 即使在使用服务时,这也会限制后台工作。 我找到了解决这个问题的方法:使用PowerManager

添加对清单的权限:

<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />