2011-10-07 99 views
3

我想在每個5分鐘的時間間隔內製作一個服務,當我的應用程序運行時,火災報警管理器只有..那麼該怎麼做?火災報警管理器每5分鐘一次android

Intent intent = new Intent(this, OnetimeAlarmReceiver.class); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, REQUEST_CODE, intent, 0); 

    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
    alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (5 * 1000), sender); 
    Toast.makeText(this, "Alarm set", Toast.LENGTH_LONG).show(); 
+1

爲什麼你需要一個服務?您不需要一項服務,只需每5分鐘發出一次警報。 –

回答

7

試試這個:

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 5*60*1000, pendingIntent); 

該警報將永遠重複,直到你取消它,所以你需要取消它越來越事件當你不再需要它。

+1

如何停止正在運行的服務?當我退出應用程序 – shyam

+0

時使用stopService().....您是否收到任何錯誤? –

+0

工作正常....感謝 – shyam

2
private class ProgressTimerTask extends TimerTask { 
     @Override 
     public void run() { 
      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        // set your time here 
        int currenSeconds = 0 
        fireAlarm(currenSeconds); 
       } 
      }); 
     } 
    } 

Inizialize:

 Timer progressTimer = new Timer(); 
    ProgressTimerTask timeTask = new ProgressTimerTask(); 
    progressTimer.scheduleAtFixedRate(timeTask, 0, 1000); 
+0

不會在服務工作檢查這個http://stackoverflow.com/questions/14924295/service-of-an-app-stops-when-phone-is-not-being-charged爲什麼 – HiB

+1

它不工作,當你手機處於睡眠模式。 – Yahor10

2

取消該活動的AlarmManageronPause()

更好的解決方案是將HandlerpostDelayed(Runnable r, 5000)結合使用,因爲您僅在應用程序運行時才說。 Handlers比使用AlarmManager更有效率。

Handler myHandler = new Handler(); 
Runnable myRunnable = new Runnable(){ 
    @Override 
    public void run(){ 
     // code goes here 
     myHandler.postDelayed(this, 5000); 
    } 
} 

@Override 
public void onCreate(Bundle icicle){ 
    super.onCreate(icicle); 
    // code 
    myHandler.postDelayed(myRunnable, 5000); 
    // to start instantly can call myHandler.post(myRunnable); instead 
    // more code 
} 

@Override 
public void onPause(){ 
    super.onPause(); 
    // code 
    myHandler.removeCallbacks(myRunnable); // cancels it 
    // code 
} 
+0

不會在服務中工作,請檢查此問題http://stackoverflow.com/questions/14924295/service-of-an-app-stops-when-phone-is-not-being-charged)原因 – HiB

+1

這並不意味着要在服務中運行。他只是在應用程序正在運行時才詢問如何每5分鐘打一次**。正如其他答案所說的那樣,啓動一項服務本來就是過分的。 – DeeV