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