我的應用程序每秒都會發出一個重複請求 - 要求服務器提供新數據,如果有這種情況 - 它會喚醒設備並運行主應用程序。 (這是由用戶提出的要求,他們不關心電池的使用情況,每秒運行一次,這是高度關鍵操作) (用戶可以改變設置的任何幫助)服務沒有喚醒設備,因爲它應該是
我curently試圖通過使用來實現這一點無論AlarmManager
或System.Threading.Timer
(既試過),但每次我與後續問題結束時間:
- 的裝置停止請求,在一些服務器當它睡覺時,並在一些看起來像隨機時間,它恢復了短暫的工作。爲什麼會發生這種情況,以及如何解決這個問題?
(OS:機器人5.x的)
(使用AlarmManager)
Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, ConfigReader.serviceRepeatInterval);
Intent intent = new Intent(this, SaleService.class);
PendingIntent pintent = PendingIntent.getService(this, 0, intent, 0);
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), ConfigReader.serviceRepeatInterval, pintent);
從服務的變化的代碼從服務的Java中的變化的代碼是C#( Xamarin)使用計時器。
public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
{
if(_powerManager == null)
{
_powerManager = (PowerManager)this.GetSystemService(PowerService);
_wakeLock = _powerManager.NewWakeLock(WakeLockFlags.Full | WakeLockFlags.AcquireCausesWakeup | WakeLockFlags.OnAfterRelease, mySaleServiceWakeLock);
vibrator = (Vibrator)this.GetSystemService(Context.VibratorService);
}
timer = new System.Threading.Timer(getCurrentPendingObjects, null, timerRepeatInterval, Timeout.Infinite);
return StartCommandResult.Sticky;
}
發佈您的代碼,您設置鬧鐘的地方 – earthw0rmjim