我已经提供了前台服务,以不断扫描我周围的BLE设备。由于某种原因,它似乎可以在我的库存android设备Google Pixel和Samsung S9 +上完美运行。
但是最近我用中文ROM(Oneplus 6T,小米Poco F1)测试了该应用程序,几分钟后,前台服务似乎在那里被杀死了。我使用过workmanager重新启动服务,但该应用程序未重新启动,但我收到了该应用程序的错误报告。
在android 8.0(小米redmi 3s Prime)以下的中文ROM设备上,简单的服务也无法正常工作,我也需要在其中使用前台服务。有什么解决办法吗?
答案 0 :(得分:1)
请用户将您的应用列入白名单。这是唯一的解决方案。甚至前台服务+唤醒锁也无法使用。
上个月进行了一次讨论:Workmanager reliability for periodic tasks on Chinese roms (Xiaomi, Huawei, and so on).中有一些有用的链接,但是最终您必须让用户在每个ROM的特定电池优化(或其他名称)设置中将您的应用列入白名单。
答案 1 :(得分:0)
一种简单的方法是,通过在应用程序的开头打开电池优化设置,要求用户将您的应用程序置于未优化的应用程序中 使用以下代码打开设置:
Intent batterySaverIntent=new Intent(Settings.ACTION_BATTERY_SAVER_SETTINGS);
startActivity(batterySaverIntent);
或者您可以尝试以下操作:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
startForegroundService(new Intent(this, ServiceClass.class));
}