我有一个从其他 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 引入的限制有关,但我不知道问题出在哪里。
潜在的解决方案:
前台服务:如果您的UpdateService需要在后台运行,请考虑将其转换为前台服务。这需要显示通知以告知用户服务正在运行。
JobScheduler 或 WorkManager:如果可以推迟更新任务,请考虑使用 JobScheduler 或 WorkManager,它们是为处理后台任务而设计的。它们根据系统资源管理运行任务的时间和条件。
检查后台限制:确保您的应用程序具有必要的权限,并检查您的应用程序是否被限制运行后台服务。您可以通过应用程序设置通知用户允许您的应用程序进行后台活动。
在前台启动服务:如果您只需要在应用处于前台时启动服务,请确保仅在应用处于前台时调用 onResume()。