2012-10-02 5 views
1

내 서비스 시작 시간 : 오전 8시. 특정 시간에 서비스를 중지하는 방법을 모르겠습니다.안드로이드에서 특정 시간에 서비스를 중지하는 방법?

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); 

나는 미사를 8시에 시작하고 매일 6시에 중지하고 싶습니다.

도와주세요. 감사.

+0

모든 필요한 정보를 찾을 수 있습니다, 동일한 작업을 수행하지만, 오후 6시 서비스를 중지 할 수 있습니다. – Carnal

+0

http://stackoverflow.com/questions/1877417/how-to-set-a-timer-in-android ..이 링크를 통해 이동하십시오. –

답변

0

AlarmManager, myService.class에서 .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; 
    } 
} 

는 다음 코드 AF를 추가 당신이 게시 및 활동 내부의 방법을 실행 한 TER :

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시에 정지 예약됩니다 이런 식으로.

0

예약을 위해 AlarmManager를 사용하고 중지 방법을 취소 할 수 있습니다.

alarmMgr.cancel(alarmIntent); 

당신이 당신의 서비스를 시작하는 오전 8시에 알람을 트리거하기 위해 같은 방법으로 여기 https://developer.android.com/training/scheduling/alarms.html

관련 문제