1

私は初心者です。jobintentservice (onHandleWork) から Toast が必要ですが、アプリがクラッシュします。logcatエラーは次のとおりです:「looper.prepare()を呼び出していないスレッドで乾杯できません」

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();

          }
      });
4

1 に答える 1

0

あなたは今ではおそらくそれを理解していますが、将来の読者のために、「looper.prepare() を呼び出していないスレッドで乾杯することはできません」というエラーは、単に ui 関連の ui を ui スレッドから呼び出す必要があることを意味します。

activity.runOnUiThread(new Runnable() {
@Override
public void run() {
    showToast(activity);
}});

ここここで同様の質問を見つけることができます

于 2019-10-11T07:48:48.017 に答える