在中文ROM中运行前台服务

时间:2018-11-29 10:37:18

标签: android altbeacon foreground-service xiaomi oneplusthree

我已经提供了前台服务,以不断扫描我周围的BLE设备。由于某种原因,它似乎可以在我的库存android设备Google Pixel和Samsung S9 +上完美运行。

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

在android 8.0(小米redmi 3s Prime)以下的中文ROM设备上,简单的服务也无法正常工作,我也需要在其中使用前台服务。有什么解决办法吗?

2 个答案:

答案 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));
    }