Firebase JobDispatcherで1回だけ実行するジョブを作る
最終更新日:2017-10-08
まずは1回だけ実行するジョブを作って実行してみましょう。
JobServiceを作る
ジョブとして実行するサービスをSimpleJobServiceを継承して作ります。JobServiceというクラスがありますが、こちらはスレッドの生成とサービスの破棄を自分で実装する必要があります。
class MyJobService : SimpleJobService() {
override fun onRunJob(job: JobParameters?): Int {
Log.v("MyTask", "onRunJob $job")
return JobService.RESULT_SUCCESS
}
}
サービスをAndroidManifest.xmlに登録する
MyJobServiceはサービスなのでAndroidManifest.xmlに登録する必要があります。外部アプリから実行されると困るのでandroid:exportedはfalseにしておきます。また、インテントフィルタにcom.firebase.jobdispatcher.ACTION_EXECUTEをつけておきます。
<manifest ...>
<application ...>
<service
android:name=".MyJobService"
android:exported="false">
<intent-filter>
<action android:name="com.firebase.jobdispatcher.ACTION_EXECUTE"/>
</intent-filter>
</service>
</application>
</manifest>
ジョブを実行する
ジョブとして何を実行するかが実装できたら、最後に実行する部分です。ジョブを作ってdispatcherに渡すだけです。1回だけすぐ実行させたいので、triggerにTrigger.NOWを指定します。
val myJob = dispatcher.newJobBuilder().apply {
setService(MyJobService::class.java)
tag = "my-unique-tag"
trigger = Trigger.NOW
}.build()
val dispatcher = FirebaseJobDispatcher(GooglePlayDriver(applicationContext))
dispatcher.mustSchedule(myJob)