BackgroundServiceStartNotAllowedException android 12 和 13

问题描述 投票:0回答:1

我有一个从其他 Activity 继承的 BaseActivity 类。这是BaseActivity类中的onResume。

@Override
    protected void onResume() {
        super.onResume();
        if (!CustomSystem.isUpdateServiceStarted()) {
            UpdateService.started = false;
            startService(new Intent(this, UpdateService.class));
            timerCheckStarted = new CountDownTimer(500, 500) {
                ...
            };
            timerCheckStarted.start();
        } else {
            UpdateService.wakeUp(BaseActivity.this);
        }
    }

在我的 firebase 页面上,我看到仅在 Android 12 和 13 中抛出 BackgroundServiceStartNotAllowedException。

我想这与 android 12 引入的限制有关,但我不知道问题出在哪里。

android android-service
1个回答
0
投票

潜在的解决方案:

前台服务:如果您的UpdateService需要在后台运行,请考虑将其转换为前台服务。这需要显示通知以告知用户服务正在运行。

JobScheduler 或 WorkManager:如果可以推迟更新任务,请考虑使用 JobScheduler 或 WorkManager,它们是为处理后台任务而设计的。它们根据系统资源管理运行任务的时间和条件。

检查后台限制:确保您的应用程序具有必要的权限,并检查您的应用程序是否被限制运行后台服务。您可以通过应用程序设置通知用户允许您的应用程序进行后台活动。

在前台启动服务:如果您只需要在应用处于前台时启动服务,请确保仅在应用处于前台时调用 onResume()。

© www.soinside.com 2019 - 2024. All rights reserved.