我们在使用定时器的时候首先会想到timer,还有handler sendmessagedelay 时间这两种方法,如需长时间的触发事件则需要使用alrm来完成:
设置alarm 时间, 睡眠sleep_time的时间
AlarmManager alarmMgr = (AlarmManager) mainActivity.getSystemService(Context.ALARM_SERVICE);
Intent alarm_intent = new Intent(mainActivity.getApplicationContext(), MediaButtonIntentReceiver.class);
alarm_intent.setAction(ALARM_SLEEP_ACTION);
int requestCode = 0;
PendingIntent mPendingIntent = PendingIntent.getBroadcast(mainActivity.getApplicationContext(), requestCode, alarm_intent, PendingIntent.FLAG_UPDATE_CURRENT);
int triggerAtTime = (int)(SystemClock.elapsedRealtime() + sleep_time*60*1000);
alarmMgr.set(AlarmManager.ELAPSED_REALTIME, triggerAtTime, mPendingIntent);
在BroadcastReceiver里面调用onreceive方法:
@Override
public void onReceive(Context context, Intent intent) {
if(ALARM_SLEEP_ACTION.equals(intentAction)){
//do things
}
}