как показать тост в WorkManager do work ()?
Когда я пытаюсь, бросает
Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
как показать тост в WorkManager do work ()?
Когда я пытаюсь, бросает
Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
Вы можете создать обработчик, чтобы показывать тост в потоке пользовательского интерфейса.
Ваш doWork
метод будет выглядеть так:
@NonNull
@Override
public Result doWork() {
Log.d(TAG, "doWork for Sync");
Handler handler = new Handler(Looper.getMainLooper());
handler.postDelayed(new Runnable() {
@Override
public void run() {
// Run your task here
Toast.makeText(mContext, "Testing", Toast.LENGTH_SHORT).show();
}
}, 1000 );
return Result.success();
}
Примечание: mContext
будет доступен в Конструкторе.
Надеюсь, это поможет тебе. Спасибо.
getApplicationContext()
, поэтому он будет работать независимо от привязки.
- person VPZ; 13.11.2020
Также нашел альтернативное решение, которое тоже сработало для меня:
@Override
public Result doWork() {
context.getMainExecutor().execute(() -> Toast.makeText(context, "Сас ))", Toast.LENGTH_LONG).show());
return Result.success(); // may be done with handler
}
Но также я сохранил переменную Context
в поле класса
Context context;
public BackgroundWorker(Context context, WorkerParameters workerParams) {
super(context, workerParams);
this.context = context;
}