モケラ

Tech Sheets

mokelab

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)

一覧に戻る