0

と を使用FirebaseJobDispatcherJobServiceて、バックグラウンドでいくつかの作業を行います。主に画面オン/オフ受信機に登録したいです。ジョブが初めて呼び出されると、受信者は想定どおりに登録されます。onStartJob()ただし、が呼び出された直後でonDestroy()、ログによると、レシーバーは null です。画面のオン/オフをトリガーしようとすると、レシーバーからのログが表示されません。ここで何が間違っていますか?

私はonStratJob()次のコードを持っています:

public boolean onStartJob(@NonNull JobParameters job) {

    Log.i(JobFormActivity.TAG, "onStartJob() called");

    if (screenBroadcast == null){
      Log.e(JobFormActivity.TAG, "onStartJob() --> receiver is null, registering receiver");
      IntentFilter screenStateFilter = new IntentFilter();
      screenStateFilter.addAction(Intent.ACTION_SCREEN_ON);
      screenStateFilter.addAction(Intent.ACTION_SCREEN_OFF);
      registerReceiver(screenBroadcast, screenStateFilter);
    }
 return false; 
  }

私はonStopJob()次のコードを持っています:

@Override
  public boolean onStopJob(@NonNull JobParameters job) {
    Log.e(JobFormActivity.TAG, "onStopJob() called");
    if(screenBroadcast != null) {
      Log.e(JobFormActivity.TAG, "onStopJob() --> receiver is not null, unregistering receiver");
      unregisterReceiver(screenBroadcast);
    }
    return false;
  }

私はonDestroy()次のコードを持っています:

public void onDestroy() {
    super.onDestroy();
    Log.e(JobFormActivity.TAG, "onDestory()");
    if(screenBroadcast != null)
        Log.e(JobFormActivity.TAG, "onDestroy() --> receiver is not null");
    else
      Log.e(JobFormActivity.TAG, "onDestory() --> receiver is null");
  }
4

1 に答える 1