私はjobFinishedを呼び出さないとどうなりますか?
JobServiceは、仕事をしている(またはそれと思われる)限り、ウォークロックを保持しています。 onStartJob()
からtrue
を返すシナリオでは、ジョブが完了したときにシステムに通知する責任があります。
jobFinished()
を呼び出すと、作業が完了したことを示し、JobServiceはwakelockを解放できることを認識します。 jobFinished()
に電話をかけると、ウォークロックが解除されず、CPUの排水が継続されます。
Androidはある時点でジョブサービスを停止しますか?
JobServiceはService soのサブクラスです。特定の条件下では、OSはサービスを強制終了します(たとえばメモリ不足)。
JobServiceの新しいインスタンスが生成されることを許可しますか?それとも、追加のサービスが開始されないようにしますか?共存できるJobServicesの最大数はありますか?
- 手動で作成/ JobServicesをインスタンス化しないでください。
- JobServiceは一度に1つのジョブしか処理しません。
同じJOBINFO IDを持つ同じJobService とのためのあなたschedule()
新規雇用した場合、現在のジョブが停止され、新しいものが開始されます。
int schedule (JobInfo job)
実行するジョブをスケジュールします。 JobInfo内の新しい情報で同じIDを持つ現在スケジュールされているジョブを置き換えます。指定されたIDを持つジョブが現在実行中の場合、ジョブは停止します。
同じJobServiceのためのあなたenqueue()
新規雇用した場合、彼らは現在のジョブが完了した後にのみ実行されます。 jobFinished()
に電話をかけないと、キュー内の次のジョブは実行されません。
(JOBINFO)スケジュールと同様に
int enqueue (JobInfo job, work)
、しかし、あなたは、新規または既存のジョブのための作業をキューに入れることができます。同じIDを持つジョブがすでにスケジュールされている場合は、新しいJobInfoに置き換えられますが、以前にエンキューされた作業はそのまま残り、次回の実行時に送出されます。同じIDを持つジョブがすでに実行されている場合は、その新しいジョブがエンキューされます。
同じJobServiceのジョブのキューイングは、schedule()
のスケジューリングとは多少異なります。完全なリファレンスについては、its docsを参照してください。