延时重启
private PendingIntent mPendingIntent;
private static final String ACTION_TIMEOUT = "reset.timeout";
mPendingIntent = PendingIntent.getBroadcast(mContext,0,new Intent(ACTION_TIMEOUT),PendingIntent.FLAG_UPDATE_CURRENT);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ACTION_TIMEOUT);
mContext.registerReceiver(mTimeoutReceiver,intentFilter);
private BroadcastReceiver mTimeoutReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG,"intent action = "+intent.getAction());
if (intent.getAction().equals(ACTION_TIMEOUT)){
Log.d(TAG,"start to restart");
Intent i = new Intent(Intent.ACTION_REBOOT);
i.putExtra(Intent.EXTRA_KEY_CONFIRM, false);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(i);
}
}
};
mAlarmManager.cancel(mPendingIntent);
mAlarmManager.setExact(AlarmManager.RTC_WAKEUP,System.currentTimeMillis()+30*1000,mPendingIntent);
定时重启
mAlarmManager.cancel(mPendingIntent);
mAlarmManager.setExact(AlarmManager.RTC_WAKEUP,getNextFixedTime(),mPendingIntent);
private long getNextFixedTime(){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_YEAR, 0);
cal.set(Calendar.HOUR_OF_DAY, 2);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.MILLISECOND, 0);
if (cal.getTimeInMillis()<= System.currentTimeMillis()){
Calendar cal_next_day = Calendar.getInstance();
cal_next_day.add(Calendar.DAY_OF_YEAR, 1);
cal_next_day.set(Calendar.HOUR_OF_DAY, 2);
cal_next_day.set(Calendar.SECOND, 0);
cal_next_day.set(Calendar.MINUTE, 0);
cal_next_day.set(Calendar.MILLISECOND, 0);
Log.d(TAG,"next day getNextFixedTime = "+cal_next_day.getTimeInMillis() +" now = "+System.currentTimeMillis());
return cal_next_day.getTimeInMillis();
}
Log.d(TAG,"current day getNextFixedTime = "+cal.getTimeInMillis() +" now = "+System.currentTimeMillis());
return cal.getTimeInMillis();
}