2016-05-02 4 views
0

定期的にサーバからデータをダウンロードするサービスをバックグラウンドで実行しています。 1時間ごとにデータをダウンロードする必要があります。しかし、バッテリーは素早く消耗しています。コードは以下の通りです。アラーム電源を効率的にするにはどうしたらいいですか?AlarmManager RTC_WAKEUPバッテリが放電する

public class BackgroundFetchService extends Service { 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 

     int s = super.onStartCommand(intent, flags, startId); 

     BackgroundFetchManager.getSharedInstance().setAlarmStatus(false); 

     TherapyManager.getSharedInstance().downloadData(new DataManager.DataManagerListener() { 
      @Override 
      public void onCompletion(AppError error) { 
       stopSelf(); 
      } 
     }); 

     return s; 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 
    public void onDestroy() { 
     //restart this service again in one hour 

     if(!BackgroundFetchManager.getSharedInstance().getAlarmStatus()) { 
      AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE); 
      alarm.set(
        alarm.RTC_WAKEUP, 
        System.currentTimeMillis() + (1000 * 60 * 60), 
        PendingIntent.getService(this, 0, new Intent(this, BackgroundFetchService.class), 0) 
      ); 
      BackgroundFetchManager.getSharedInstance().setAlarmStatus(true); 
     } 

     super.onDestroy(); 
    } 
} 
+0

はどのようにしても、それはバッテリーが「排水」されていることを警報のせいです知っているのですか? –

答えて

1

文書によるので、唯一RTCで試してみてください:https://developer.android.com/training/scheduling/alarms.htmlRTCが指定した時刻に保留中の意図を発射するが、デバイスを起動しません。例えば

AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE); 
alarm.set(
     alarm.RTC, 
     System.currentTimeMillis() + (1000 * 60 * 60), 
     PendingIntent.getService(this, 0, new Intent(this, BackgroundFetchService.class), 0) 
); 
BackgroundFetchManager.getSharedInstance().setAlarmStatus(true); 
関連する問題