为了创建一个接收器,我在旧项目中扩展了WakefulBroadcastReceiver
。但现在是deprecated
。而不是我现在应该使用WakefulBroadcastReceiver
的{{1}}以及如何使用新方法转换下面的代码?
这是我的代码:
Receiver
答案 0 :(得分:7)
您可以这样重写代码:
public class TaskFinishReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//do your stuff in the JobIntentService class
MyJobIntentService.enqueueWork(context, intent);
}
}
这将起作用,因为根据文档,新的JobIntentService类将处理唤醒锁和向后兼容性:
使用此类时,不需要使用WakefulBroadcastReceiver。在Android O上运行时,JobScheduler将为您处理唤醒锁(从将工作入队到作业被分派以及运行时一直保持唤醒锁)。在平台的早期版本上运行时,可以通过直接调用PowerManager在此处的类中模拟此唤醒锁处理。这意味着应用程序必须请求WAKE_LOCK权限。
答案 1 :(得分:6)
WakefulBroadcastReceiver
已弃用 。
从Android O开始,后台检查限制使这个类没有 更长的一般有用。 (启动服务通常不安全 从收到广播,因为你没有任何保证 您的应用程序此时处于前台,因此允许 这样做。)相反,开发人员应该使用
android.app.job.JobScheduler
安排工作,这不要求应用程序保持唤醒 这样做时锁定(系统将负责保持唤醒锁定 为了这份工作)。
public class JobSchedulerService extends JobService {
@Override
public boolean onStartJob(JobParameters params) {
return false;
}
@Override
public boolean onStopJob(JobParameters params) {
return false;
}
}
对于演示案例,请检查