2011-09-14 29 views
0

我有一個應用程序執行一些數據處理,然後通知用戶在狀態欄中是否有任何新項目被發現。該過程在設定的時間內作爲AlarmManager運行。一切工作正常,但我最好不喜歡在積極使用應用程序時通知用戶,這意味着AlarmManager應該基本上被暫停。我能想到的是不斷啓動的唯一解決方案/停止在主要活動的方法的onResume報警與此類似:AlarmManger經常啓動和停止,壞習慣?

@Override 
public void onResume() 
{ 
     AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
     Intent myIntent = new Intent(this, AlarmReceiver.class); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, myIntent, 0); 
     alarmManager.cancel(pendingIntent); 
     alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 600000, 600000, pendingIntent); 
} 

這是不是萬無一失的,但最好的解決方案,我能想到的。只是想知道這是不好的做法還是有更好的解決方案?謝謝。

回答

0

只需將您的AlarmReceiver(或其調用的服務)檢查以查看應用是否可見。您需要在您的應用程序和AlarmReceiver/Service之間共享一些狀態。您可以有一個基本的Activity,告訴您在onResume期間位於前臺的AlarmReceiver/Service,並且它在onPause期間位於後臺。然後AlarmReceiver/Service可以在警報關閉時簡單地檢查這個狀態,並使用它來決定是否顯示通知。