android 정시 작업 수행
AlarmManager 의 시 계 는 실제 시간 과 동기 화 되 어 있 습 니 다. 따라서 Android 휴대 전화 휴면 상태 에서 AlarmManager 의 시간 은 느 려 지지 않 습 니 다. 다음은 AlarmManager 의 기본 사용 을 소개 합 니 다.
AlarmManager 의 사용 메커니즘 은 전역 타이머 라 고도 부 르 고, 어떤 것 은 자명종 이 라 고도 부른다.그것 에 대한 사용 을 통 해 그것 의 작용 은 Timer 와 약간 비슷 하 다.모두 두 가지 비슷 한 용법 이 있다. (1) 지 정 된 시간 이 지난 후에 특정한 조작 을 집행 한다 (2) 주기 적 으로 특정한 조작 을 집행 한다.
AlarmManager 대상 이 Intent 와 함께 사용 하면 한 Activity 를 정기 적 으로 열 고 BroadCast 를 보 내 거나 서 비 스 를 시작 할 수 있 습 니 다. 아래 코드 는 두 가지 정시 방식 의 사용 을 상세 하 게 소개 합 니 다. (1) 지 정 된 시간 후에 특정한 조작 을 수행 할 수 있 습 니 다.
/ / 이하 의 코드 는 본인 의 < < 축구 실시 간 스코어 > > 중의 코드 부분 입 니 다.
public static AlarmManagerUtil{
public static AlarmManager getAlarmManager(Context ctx){
return (AlarmManager) ctx.getSystemService(Context.ALARM_SERVICE);
}
/**
* ( )
* : Receiver manifest.xml
*
* @param ctx
*/
public static void sendUpdateBroadcast(Context ctx){
Log.i("score", "send to start update broadcase,delay time :"+60000);
larmManager am = getAlarmManager(ctx);
// 60 , UpdateReceiver ,
Intent i = new Intent(ctx, UpdateReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(ctx, 0, i, 0);
am.set(AlarmManager.RTC, System.currentTimeMillis()+60000, pendingIntent);
}
/**
* ( )
*
* @param ctx
*/
public static void cancelUpdateBroadcast(Context ctx){
AlarmManager am = getAlarmManager(ctx);
Intent i = new Intent(ctx, UpdateReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(ctx, 0, i, 0);
am.cancel(pendingIntent);
}
}
//
public static class UpdateReceiver extends BroadcastReceiver{
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, " ", Toast.LENGTH_LONG).show();
// ( ) 60 .
// JavaScript setTimeout(xxx,60000)
AlarmManagerUtil.sendUpdateBroadcast(context);
}
}
(2) 어떤 조작 을 주기 적 으로 집행 한다.
public static void sendUpdateBroadcastRepeat(Context ctx){
Intent intent =new Intent(ctx, UpdateReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(ctx, 0, intent, 0);
//
long firstime=SystemClock.elapsedRealtime();
AlarmManager am = (AlarmManager) ctx.getSystemService(ALARM_SERVICE);
//60 ,
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstime, 60*1000, pendingIntent);
}
타이머 취소 (알 람)
/**
* ( )
*
* @param ctx
*/
public static void cancelUpdateBroadcast(Context ctx){
AlarmManager am = getAlarmManager(ctx);
// UpdateReceiver.class ,
Intent i = new Intent(ctx, UpdateReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(ctx, 0, i, 0);
am.cancel(pendingIntent);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.