私はジョブスケジューラを使用しています。私の主なアクティビティは、次にインターネットに接続するときに開始する予定です。アプリケーションが最初にインストールされると、レイアウトにはただ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());
}
});
}