2012-10-02 87 views
1

開始我的服務:上午8點。我不知道如何在特定時間停止服務。如何在特定的時間在Android上停止服務?

AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
Intent intent = new Intent(this, MyService.class); 
PendingIntent pi = PendingIntent.getService(this, 
(int) System.currentTimeMillis(), intent, 0); 
Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.HOUR_OF_DAY, 8); 
calendar.set(Calendar.MINUTE, 0); 
calendar.set(Calendar.SECOND, 0); 
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000, pi); 

我想讓Myservice在早上8點開始,並在每天的下午6點停下來。

請幫幫我。謝謝。

+0

信息以同樣的方式來觸發報警上午8點開始爲您服務,做相同的,但在下午6時停止服務。 – Carnal

+0

http://stackoverflow.com/questions/1877417/how-to-set-a-timer-in-android ..通過這個鏈接 –

回答

0

您可以使用myService.class中的AlarmManager,.cancel(PendingIntent intent),檢查它是否是下午6點,如果意圖存在,則取消警報。

檢查API: Alarm Manager API

0

這可能是一個老問題,但我碰到這個問題我今天想出一個辦法做到這一點: 您可以使用一個新的服務,停止服務,並啓動在日常工作中所需的時間服務使用報警管理器,例如:

定義服務,將停止爲您服務:

package com.youractivity; 

import android.app.Service; 
import android.content.Intent; 
import android.os.IBinder; 
import android.util.Log; 


public class MyServiceTerminator extends Service { 

    @Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
     return Service.START_NOT_STICKY; 
    } 


public void onCreate() 
    { 
    Intent service = new Intent(this, MyService.class); 
    stopService(service); //stop MyService 
    stopSelf();  //stop MyServiceTerminator so that it doesn't keep running uselessly 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 
    //TODO for communication return IBinder implementation 
    return null; 
    } 
} 

添加以下代碼自動對焦之三,你貼出來,和運行活動裏面的方法之一:

private void stopRecurringAlarm(Context context) { 
    Calendar updateTime = Calendar.getInstance(); 
    updateTime.setTimeZone(TimeZone.getTimeZone("GMT+3")); 
    updateTime.set(Calendar.HOUR_OF_DAY, 18); 
    updateTime.set(Calendar.MINUTE, 0); 
    Intent intent = new Intent(this, MyServiceTerminator.class); 
    PendingIntent pintent = PendingIntent.getService(context, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
    AlarmManager alarms = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
    alarms.setRepeating(AlarmManager.RTC_WAKEUP,updateTime.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pintent); 
} 

這樣的服務將被安排開始爲你上面貼,並定於6所示,我發佈的代碼停止。

相關問題