2017-12-07、08 到達点メモ
JobScheduleについて
恐らく何らかの制限をかけることを前提で作っているので
何の制限が掛かっていない状態で動くことは想定されていない
具体的にいうと以下のようにバッテリーの状態関係無し、ネットワークが繋がっていてもいなくても関係が無い、アイドル状態を無視する、というような設定をしていると、
JobScheduleを動かしたときに、java.lang.IllegalArgumentException: You're trying to build a job with no constraints, this is not allowed.というようなエラーが出る。
builder.setBackoffCriteria(10000, JobInfo.BACKOFF_POLICY_LINEAR)
val bundle = PersistableBundle()
builder.setExtras(bundle)
builder.setPersisted(false)
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_NONE)
scheduler.schedule(builder.build())
また、JobInfo.Builderでjobのサービス名を指定する際に、正しいパッケージ名とサービス名を指定しないとエラーになるので、注意すること。
恐らく今回の目的には、JobScheduleは使えないと思われる。
なので公式ドキュメントのバックグラウンド実行制限を読み直したところ
>>アプリがアイドル状態にある場合、バックグラウンド サービスの使用を制限します。 >>これは、ユーザーが認識しやすいフォアグラウンド サービスには適用されません。
とのことなので、フォアグラウンド サービスで動かせばいけそうな気がする
参考サイト:公式ドキュメント サービス
参考サイト:Service が Foreground で動いているか確認する
参考サイト:Serviceの挙動について
参考サイト:Android Marshmallow の Doze テストの正しい手順
参考サイト:[Android] Service の使い方
参考サイト:Android Oからのバックグラウンド・サービスの制限事項を実演する。
参考サイト:AndroidのServiceについて
情報を整理したいので今日はここまで。
0 コメント:
コメントを投稿