在Android Oreo以及更高版本中,JobIntentService默认在主线程上运行。这可能会导致应用程序在执行耗时任务时出现几秒钟的冻结。
要解决这个问题,可以使用以下方法将JobIntentService的工作线程更改为后台线程:
public class MyJobIntentService extends JobIntentService {
// ...
@Override
public void onCreate() {
super.onCreate();
setIntentRedelivery(true);
}
// ...
}
@Override
protected void onHandleWork(Intent intent) {
new Thread(new Runnable() {
@Override
public void run() {
// 执行耗时任务的代码
}
}).start();
}
这样,JobIntentService将在后台线程上执行任务,不会阻塞主线程,从而避免应用程序冻结几秒钟的问题。