web-dev-qa-db-ja.com

Android API <21でジョブスケジューラを使用する

Vogella によるスケジューリングチュートリアルを見ていました。それは言及しています ジョブスケジューラ AndroidのAPI 21で導入されたAPI。私の質問は、21(Lollipop)未満のAPIに実装できますが、Androidバージョン3(ハニカム)?

38
Manny265

これ以降(I/O 2015以降)、新しいGcmNetworkManagerも使用できます。使用方法と機能については、ここで説明します- https://developers.google.com/cloud-messaging/network-manager

再起動後もタスクを持続させるなど、非常に優れた機能を備えています。 LolipopではJobSchedulerを使用し、Lolipopより前では独自の実装を使用します。

編集:

使用方法のサンプルコード: https://github.com/jacktech24/gcmnetworkmanager-Android-example

36
filipproch

Evernoteの非常に優れた強力な ジョブスケジューラライブラリ があります。各SDKレベルで最適な方法を使用し、ジョブをスケジュールして実行するための非常にクリーンでエレガントなインターフェイスを提供します。

16
Greg Ennis

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の詳細については、そのドキュメントとソースコードを参照してください。

12
iMobaio

ロリポップの前に「ジョブ」を実行する方法はいくつかあります。

前述のように、JobSchedulerCompatライブラリーを使用できますが、このライブラリーにはデフォルトのLollipop APIと比較して大きな違いがあります。

Lollipopのジョブは、すべてのアプリに対して一括してスケジュールされます。ただし、ライブラリは他のアプリデータにアクセスできないため、ライブラリを使用して2つの異なるアプリからのジョブを結合することはできません。

試してみたいもう1つのオプションは、AlarmManager AP​​Iです。このAPIはジョブのスケジューリングに使用できますが、1つの違いは、AlarmManagerにはジョブの実行タイミング以外の制約がないことです。

KitKatからAlarmManager APIは、「exact」メソッドでスケジュールされていないときにジョブをバッチ処理します。 KitKatジョブがバッチ処理される前。

データを同期することが目標の場合、Sync-Adapter APIが役立つ場合があります。 Sync-Adapter

参照: AlarmManagerJobSchedulerCompat

7
Rolf ツ

最新のバックグラウンドジョブスケジューリングAPIによると、WorkManager 現在はAlphaを使用する必要があります。

WorkManagerを使用すると、完了を保証する必要のあるバックグラウンドタスクをスケジュールできます(アプリプロセスの前後に関係なく)。 WorkManagerは、JobSchedulerのようなAPI 14+デバイスの機能を提供しますが、それらもGoogle Play Servicesなしです。

WorkManagerはqueryable(observable)であり、作業グラフと強力なAPIを強力にサポートします。

JobScheduler、FireBaseJobScheduler、AlarmManagerおよびBroadcastReceiversを使用している場合は、代わりにWorkManagerの使用を検討する必要があります。詳細については、 Work Manager を参照してください。

6
Asad

JobSchedulerCompatライブラリをご覧ください。

しかし、著者が指摘しているように、JobSchedulerがLollipop以降でのみ利用できるのには理由があるので、それに注意を払ってください。引用:

ただし、このライブラリは十分にテストされていないため、現時点では本番環境では使用しないことをお勧めします。これによりバッテリーが消耗したり、デバイスが爆発したりしないという保証はありません。

4
Sebastiano

this link about Android N Preview API Overview。

GCMNetworkManager 、Google Play Servicesの一部で、Androidのレガシーバージョン間で互換性のある同様のジョブスケジューリングを提供します。