2012-04-23 162 views
3

我有一個小問題...更多'比任何其他我需要一些提示和例子.. 我需要運行2個字符串的比較,其中之一是從設備上的當前日期派生另一個是我寫的日期。所以這個比較可以隨時做出。 這個比較如果是真的運行各種命令。Android AlarmManager服務

我已經創建的一個服務,在這個服務調用的存在,我需要比較的AlarmManager ..

private static final int EXEC_INTERVAL = 10 * 1000; 

Intent myIntent = new Intent(AndroidAlarmService.this, MyAlarmService.class); 
    pendingIntent = PendingIntent.getService(AndroidAlarmService.this, 0, myIntent, 0); 

      AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 

      Calendar calendar = Calendar.getInstance(); 
      calendar.setTimeInMillis(System.currentTimeMillis()); 
      calendar.add(Calendar.SECOND, 10); 

      alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), EXEC_INTERVAL, pendingIntent); 

什麼方法好做什麼,我需要什麼?

我用這個嗎?還是需要BroadcastReceiver?

如果你能給我一些例子非常感謝..提前致謝!

回答

3

據我所知,你在「MyAlarmService」中每10秒進行一次測試,對吧?

如果是這樣,我的建議是使用處理程序而不是AlarmManager。根據android文檔(http://developer.android.com/reference/android/app/AlarmManager.html),您應該使用Handler來執行計時操作。

此外,您可能無需每次運行測試時都啓動服務。服務不是你應該不斷開始的東西,你可能想要把測試代碼放在循環中,並且只在你真正需要時才啓動服務。

至於使用處理器的例子,這裏有一個教程:http://www.vogella.com/articles/AndroidPerformance/article.html

你應該做的是:

Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { /* comparison work */ }, EXEC_INTERVAL); 
+0

非常感謝,但我需要即使設備的循環執行進入睡眠模式。 – Tony 2012-04-23 01:06:13

+0

你的意思是:你可能想把測試代碼放在循環中? – Tony 2012-04-23 01:15:42