Vogella によるスケジューリングチュートリアルを見ていました。それは言及しています ジョブスケジューラ AndroidのAPI 21で導入されたAPI。私の質問は、21(Lollipop)未満のAPIに実装できますが、Androidバージョン3(ハニカム)?
これ以降(I/O 2015以降)、新しいGcmNetworkManagerも使用できます。使用方法と機能については、ここで説明します- https://developers.google.com/cloud-messaging/network-manager
再起動後もタスクを持続させるなど、非常に優れた機能を備えています。 LolipopではJobSchedulerを使用し、Lolipopより前では独自の実装を使用します。
編集:
使用方法のサンプルコード: https://github.com/jacktech24/gcmnetworkmanager-Android-example
Evernoteの非常に優れた強力な ジョブスケジューラライブラリ があります。各SDKレベルで最適な方法を使用し、ジョブをスケジュールして実行するための非常にクリーンでエレガントなインターフェイスを提供します。
Lollipop以前のデバイスに推奨されるアプローチは、 https://github.com/firebase/firebase-jobdispatcher-Android#user-content-firebase-jobdispatcher- を使用することです
詳しくは https://developer.Android.com/topic/performance/scheduling.html#fjd
Firebase JobDispatcherは、AndroidプラットフォームのJobSchedulerに似たAPIを提供するオープンソースライブラリです。FirebaseJobDispatcherは機能しますAndroid 5.0(APIレベル21)未満のバージョンを対象とするアプリのJobScheduler互換性レイヤーとして。
Firebase JobDispatcherは、ジョブをディスパッチ(実行)するための実装としてGoogle Playサービスの使用をサポートしていますが、ライブラリでは他の実装を定義して使用することもできます:たとえば、JobSchedulerを使用するか、独自のカスタムコードを記述するかを決定できます。この汎用性のため、アプリがAndroid 5.0(APIレベル21)よりも低いバージョンを対象とする場合は、このFirebase JobDispatcherを使用することをお勧めします。
Firebase JobDispatcherの詳細については、そのドキュメントとソースコードを参照してください。
ロリポップの前に「ジョブ」を実行する方法はいくつかあります。
前述のように、JobSchedulerCompat
ライブラリーを使用できますが、このライブラリーにはデフォルトのLollipop APIと比較して大きな違いがあります。
Lollipopのジョブは、すべてのアプリに対して一括してスケジュールされます。ただし、ライブラリは他のアプリデータにアクセスできないため、ライブラリを使用して2つの異なるアプリからのジョブを結合することはできません。
試してみたいもう1つのオプションは、AlarmManager
APIです。このAPIはジョブのスケジューリングに使用できますが、1つの違いは、AlarmManager
にはジョブの実行タイミング以外の制約がないことです。
KitKatからAlarmManager APIは、「exact」メソッドでスケジュールされていないときにジョブをバッチ処理します。 KitKatジョブがバッチ処理される前。
データを同期することが目標の場合、Sync-Adapter APIが役立つ場合があります。 Sync-Adapter
最新のバックグラウンドジョブスケジューリングAPIによると、WorkManager 現在はAlphaを使用する必要があります。
WorkManagerを使用すると、完了を保証する必要のあるバックグラウンドタスクをスケジュールできます(アプリプロセスの前後に関係なく)。 WorkManagerは、JobSchedulerのようなAPI 14+デバイスの機能を提供しますが、それらもGoogle Play Servicesなしです。
WorkManagerはqueryable(observable)であり、作業グラフと強力なAPIを強力にサポートします。
JobScheduler、FireBaseJobScheduler、AlarmManagerおよびBroadcastReceiversを使用している場合は、代わりにWorkManagerの使用を検討する必要があります。詳細については、 Work Manager を参照してください。
JobSchedulerCompatライブラリをご覧ください。
しかし、著者が指摘しているように、JobSchedulerがLollipop以降でのみ利用できるのには理由があるので、それに注意を払ってください。引用:
ただし、このライブラリは十分にテストされていないため、現時点では本番環境では使用しないことをお勧めします。これによりバッテリーが消耗したり、デバイスが爆発したりしないという保証はありません。
this link about Android N Preview API Overview。
GCMNetworkManager 、Google Play Servicesの一部で、Androidのレガシーバージョン間で互換性のある同様のジョブスケジューリングを提供します。