2012-10-02 52 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所示,我发布的代码停止。

相关问题