我做了一个前台服务,不断扫描我周围的BLE设备。出于某种原因,它似乎在我现有的安卓设备谷歌像素和三星S9+上运行得无懈可击。
但最近我用中国版的F1(一加6T,小米Poco F1)测试了这款应用,几分钟后前台服务似乎就被终止了。我已经使用workmanager重启了服务,但应用程序没有重启,我得到的是应用程序的错误报告。
同样在android 8.0(小米redmi 3s prime)以下的中国ROM设备上,简单的服务不起作用,我需要在那里使用前台服务。有没有解决这个问题的办法?
发布于 2018-11-29 19:08:11
要求用户将您的应用程序列入白名单。这是唯一的解决方案。即使是前台服务+唤醒锁也不起作用。
上个月有一次讨论:Workmanager reliability for periodic tasks on Chinese roms (Xiaomi, Huawei, and so on).里面有一些有用的链接,但最终你必须让用户将你的应用程序列入每个只读存储器特定的电池优化(或其他名称)设置的白名单。
发布于 2018-11-29 19:13:20
一个简单的方法是要求用户在应用程序开始时打开电池优化设置,让用户将应用程序放在未优化的应用程序中,使用以下代码打开设置:
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));
}https://stackoverflow.com/questions/53537053
复制相似问题