GCM を使用すると、サーバーが更新をプッシュできるため、更新が利用可能な場合にのみネットワークが使用されるため、ポーリングよりも電力効率が高くなります。確認するためだけに電話をチェックしてウェイクアップするため、タイムリーなポーリングよりもはるかに優れています。アップデート用
重要: C2DM は 2012 年 6 月 26 日に正式に廃止されました。これは、C2DM が新しいユーザーと割り当て要求の受け入れを停止したことを意味します。C2DM に新しい機能は追加されません。ただし、C2DM を使用するアプリは引き続き動作します。既存の C2DM 開発者は、Google Cloud Messaging for Android (GCM) と呼ばれる C2DM の新しいバージョンに移行することをお勧めします。詳細については、C2DM から GCM への移行に関するドキュメントを参照してください。開発者は、新しい開発に GCM を使用する必要があります。
ただし、GCM では取得できないため、ポーリング自体を使用する必要があります。アラーム マネージャーと不正確な繰り返しを使用することで、電力効率の高い方法で使用できます。
定期的にポーリングするのが最も電力効率の良い方法だと思います
サンプルコードを与える
public class MyScheduleReceiver extends BroadcastReceiver {
// Restart service every 30 sec
private static final long REPEAT_TIME = 1000 * 30 ;
@Override
public void onReceive(Context context, Intent intent) {
AlarmManager service = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, MyStartServiceReceiver.class);
PendingIntent pending = PendingIntent.getBroadcast(context, 0, i,
PendingIntent.FLAG_CANCEL_CURRENT);
Calendar cal = Calendar.getInstance();
// Start 30 seconds after boot completed
cal.add(Calendar.SECOND, 30);
//
// Fetch every 30 seconds
// InexactRepeating allows Android to optimize the energy consumption
service.setInexactRepeating(AlarmManager.RTC_WAKEUP,
cal.getTimeInMillis(), REPEAT_TIME, pending);
// service.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
// REPEAT_TIME, pending);
}
}
(必要なマニフェスト項目を含めたより詳しい説明があります。)