Android 는 매일 정시 알림 기능 을 실현 합 니 다.
인터넷 에서 많이 찾 았 습 니 다.많은 구 덩이 를 만 났 습 니 다.찾 아 낸 것 입 니 다.예 를 들 어 다음 에 중복 시간의 두 번 째 매개 변 수 를 설정 합 니 다.인터넷 에서 실행 알림 이 몇 밀리초 지연 되 었 는 지 말 하 는 사람 이 많 습 니 다.제 가 사용 한 MIUI 의 삼 성 핸드폰 테스트 는 왜 모두 틀 렸 는 지 모 르 겠 습 니 다.테스트 를 통 해 알 수 있 듯 이 원래 그 매개 변 수 는 설 정 된 시간 점 의 밀리초 값 입 니 다!자,더 이상 말 하지 않 겠 습 니 다.코드 를 보 세 요.
/**
*
*/
private void startRemind(){
// ,
mCalendar = Calendar.getInstance();
mCalendar.setTimeInMillis(System.currentTimeMillis());
//
long systemTime = System.currentTimeMillis();
// ,
mCalendar.setTimeInMillis(System.currentTimeMillis());
// , 8
mCalendar.setTimeZone(TimeZone.getTimeZone("GMT+8"));
// 13
mCalendar.set(Calendar.HOUR_OF_DAY, 13);
// 25
mCalendar.set(Calendar.MINUTE, 25);
//
mCalendar.set(Calendar.SECOND, 0);
mCalendar.set(Calendar.MILLISECOND, 0);
// 13 25
// 13 25
long selectTime = mCalendar.getTimeInMillis();
// ,
if(systemTime > selectTime) {
mCalendar.add(Calendar.DAY_OF_MONTH, 1);
}
//AlarmReceiver.class
Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);
// AlarmManager
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
//********** !! *********
/**
*
* mCalendar.getTimeInMillis() 13 25
*/
am.set(AlarmManager.RTC_WAKEUP, mCalendar.getTimeInMillis(), pi);
/**
*
* ;
* , , MIUI , 13 25
* ,
*/
am.setRepeating(AlarmManager.RTC_WAKEUP, mCalendar.getTimeInMillis(), (1000 * 60 * 60 * 24), pi);
}
/**
*
*/
private void stopRemind(){
Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, 0,
intent, 0);
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
//
am.cancel(pi);
Toast.makeText(this, " ", Toast.LENGTH_SHORT).show();
}
위의 첫 번 째 매개 변수의 상세 한 설명:AlarmManager.RTC,하드웨어 알 람,휴대 전화(다른 장치 일 수도 있 음)를 깨 우지 않 고 휴면 합 니 다.휴대 전화 가 휴면 할 때 자명종 을 발사 하지 않 는 다.
AlarmManager.RTC_WAKEUP,하드웨어 알 람,알 람 이 n 을 보 낼 때 휴대 전화 휴면 을 깨 웁 니 다.
AlarmManager.ELAPSED_REALTime,실제 시간 은 자명종 을 흐 르 고 휴대 전화 휴면 을 깨 우지 않 습 니 다.휴대 전화 가 휴면 할 때 자명종 을 발사 하지 않 는 다.
AlarmManager.ELAPSED_REALTIME_WAKEUP,실제 시간 은 알 람 을 흐 르 고 알 람 이 n 을 보 낼 때 휴대 전화 휴면 을 깨 웁 니 다.
RTC 알 람 과 ELAPSEDREALTime 의 가장 큰 차 이 는 전자 가 휴대 전화 시간 수정 을 통 해 알 람 사건 을 촉발 할 수 있다 는 것 이다.후 자 는 실제 시간 을 통 해 흐 르 고 휴면 상태 에서 도 시간 이 계산 된다 는 것 이다.
그리고 라디오 수신 자 를 쓴다.
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// ,
}
}
마지막 으로 라디오 수신 자 에 게 목록 파일 을 설정 하 는 것 을 잊 지 마 세 요.
<receiver
android:name=".receiver.AlarmReceiver"
android:process=":remote"
/>
사용 방법 은 시작 알림 을 직접 호출 하거나 알림 을 닫 으 면 됩 니 다.이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.