1

私はジョブスケジューラを使用しています。私の主なアクティビティは、次にインターネットに接続するときに開始する予定です。アプリケーションが最初にインストールされると、レイアウトにはただ1つのボタンがあり、クリックするとネットワーク依存のサービスがスケジュールされ、その後、アクティビティが終了するようになります(レイアウトが破棄されるように、私はそれについて2つの質問があります:ジョブスケジューラを使用してサービスをスケジュールした後、アクティビティを完了しますか?

1)サービスがスケジュールされているアクティビティが破壊された場合、サービスはまだスケジュールされているか、それとも失われていますか?

2)なぜ、finish()(サービスをスケジュールした後)の最後にメソッドfinish()を呼び出しても、アクティビティが終了せず、finish()が存在しないようなことは何も起こりません。

これは、サービスが破壊されたスケジュールアクティビティが はサービスがまだ予定されているか、それが失われたことを意味していることない場合OnCreateのコード

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final Button button = (Button) findViewById(R.id.button); 
    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      mJobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE); 

      JobInfo.Builder builder = new JobInfo.Builder(1, 
       new ComponentName(getPackageName(), 
        JobSchedulerService.class.getName())); 

      builder.setPersisted(true); 

      builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY); 

      mJobScheduler.schedule(builder.build()); 
     } 
    }); 
} 

答えて

0

1)がありますか?

いいえ、JobSchedulerは動作させるためにあなたのアクティビティやアプリケーションを生き残らせる必要はありません。

2)なぜメソッドを呼び出すのですか()...アクティビティを終了しません ...?

この現象を再度確認してください。接続された一時停止デバッガは実行を停止し、アクティビティが終了しないようにします。 The behavior of this method is a bit nuanced

関連する問題