Вызвано java.lang.RuntimeException: Невозможно создать обработчик внутри потока, который не вызвал Looper.prepare()

Инициализация обработчика внутри JobIntentService, когда автономный режим вызывает эту проблему

Caused by java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
       at android.os.Handler.<init>(Handler.java:200)
       at android.os.Handler.<init>(Handler.java:114)
       at JobIntentSericeClass.calculateExtras(DataManager.java:288)
       at JobIntentSericeClass.onHandleBlockingIntent(DataManager.java:499)
       at JobIntentSericeClass.onHandleWork(DataManager.java:100)
       at android.support.v4.app.JobIntentService$CommandProcessor.doInBackground(JobIntentService.java:391)
       at android.support.v4.app.JobIntentService$CommandProcessor.doInBackground(JobIntentService.java:382)
       at android.os.AsyncTask$2.call(AsyncTask.java:295)
       at java.util.concurrent.FutureTask.run(FutureTask.java:237)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
       at java.lang.Thread.run(Thread.java:818)

Пожалуйста, используйте следующий код:

public class JobIntentServiceClass extends JobIntentService {

@Override
    protected void onHandleWork(@NonNull Intent intent) {
       onHandleBlockingIntent(intent);
    }

private void onHandleBlockingIntent(Intent intent) {
    calculateExtras();
}

private void calculateExtras() {
final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                // some async task here
                }
            }
        }, 5000);
}
}

Я получил ошибку в строке, где инициализируется обработчик. А также это происходит, когда приложение находится в автономном режиме. Онлайн сценарий работает отлично. Кажется действительно странным

0 ответов

Другие вопросы по тегам