来自 JobIntentService 的吐司
Posted
技术标签:
【中文标题】来自 JobIntentService 的吐司【英文标题】:Toast from JobIntentService 【发布时间】:2019-11-21 23:24:48 【问题描述】:我是初学者。 我想要来自 jobintentservice (onHandleWork) 的 Toast,但我的应用程序崩溃了。 logcat 错误是:“不能在没有调用 looper.prepare() 的线程上烤面包” 我想在 jobintentservice 中与处理程序一起学习 请帮帮我。
public class NotificationService extends JobIntentService
public static final String TAG = NotificationService.class.getSimpleName();
Handler handler;
public static void enqueuWork(Context context,Intent intent)
enqueueWork(context,NotificationService.class,20,intent);
public void onCreate()
super.onCreate();
Toast.makeText(this, "Start background Service", Toast.LENGTH_SHORT).show();
@Override
public int onStartCommand(@Nullable Intent intent, int flags, int startId)
handler = new Handler();
return super.onStartCommand(intent, flags, startId);
@Override
protected void onHandleWork(@NonNull Intent intent)
handler.post(new Runnable()
@Override
public void run()
Toast.makeText(NotificationService.this, "onhandlework", Toast.LENGTH_SHORT).show();
);
【问题讨论】:
【参考方案1】:你现在已经猜到了,但对于未来的读者来说,错误“不能在没有调用 looper.prepare() 的线程上烤”只是意味着你必须从 ui 线程调用相关的 ui。
activity.runOnUiThread(new Runnable()
@Override
public void run()
showToast(activity);
);
您可以找到类似的问题here 和here
【讨论】:
以上是关于来自 JobIntentService 的吐司的主要内容,如果未能解决你的问题,请参考以下文章
Activity 和 JobIntentService 生命周期
JobIntentService 的 onDestroy 被调用后会发生啥?
JobIntentService - onHandleWork 并不总是被调用?