2

我做了一个前台服务来不断扫描我周围的 BLE 设备。出于某种原因,它似乎可以在我的库存 android 设备 Google 像素和三星 S9+ 上完美运行。

但是最近我用中文ROM(Oneplus 6T,小米Poco F1)测试了该应用程序,前台服务似乎在几分钟后就被杀死了。我已经使用 workmanager 重新启动服务,但应用程序没有重新启动,而是收到了应用程序的错误报告。

同样在android 8.0(小米红米3s prime)以下的中文ROM设备上,简单的服务不起作用,我还需要在那里使用前台服务。有什么办法可以解决这个问题吗?

4

2 回答 2

1

要求用户将您的应用列入白名单。这是唯一的解决方案。即使前台服务+唤醒锁也不起作用。

上个月有一个讨论:Workmanager 在中文 rom(小米、华为等)上定期任务的可靠性。那里有一些有用的链接,但最终您必须让用户在每个 ROM 的特定电池优化(或其他名称)设置中将您的应用列入白名单。

于 2018-11-29T11:08:10.913 回答
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));
    }
于 2018-11-29T11:13:20.200 回答