我是初学者。 我想要来自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();
}
});
答案 0 :(得分:0)
您现在已经很清楚了,但是对于将来的读者来说,错误“无法在未调用looper.prepare()的线程上敬酒”只是意味着您必须从ui线程调用相关的ui。
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
showToast(activity);
}});
您可以找到类似的问题Microsoft Docs和here