private Timer mTimer;
private TimerTask mTimerTask;
mTimer = new Timer();
mTimerTask = new TimerTask() {@Override
public void run() {
// TODO Auto-generated method stub
Log.d("11", "timer + ----" + i);
i++;
}
};
mTimer.schedule(mTimerTask, 500, 500);
定时器和定时器任务都可以cancel
cancel后再schedule 会报空指针
倒计时定时器:
public class CountTimer extends CountDownTimer { private final String tag = "CountDownUtils"; private Button tv_display; public CountTimer(Button textView, long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); // TODO Auto-generated constructor stub tv_display = textView; } @Override public void onFinish() { // TODO Auto-generated method stub timerButton.setFocusable(true); tv_display.setTextColor(Color.WHITE); tv_display.setText("重新发送"); } @Override public void onTick(long millisUntilFinished) { // TODO Auto-generated method stub tv_display.setTextColor(getResources().getColor(R.color.titletext_unsel_color)); tv_display.setText("重新发送\n" + "(" + (millisUntilFinished / 1000 - 1) + " s)"); } }
private void startCountTimer() { if (countTimer != null) { countTimer.cancel(); countTimer = null; } countTimer = new CountTimer(timerButton, 60 * 1000, 1000); countTimer.start(); timerButton.setFocusable(false); } private void endCountTimer() { if (countTimer != null) { countTimer.cancel(); countTimer = null; } }
用闹钟定时:
public static void startPollingService(Context context, int seconds, Class<?> cls, String action) { AlarmManager manager = (AlarmManager) context .getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(context, cls); intent.setAction(action); PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); long triggerAtTime = SystemClock.elapsedRealtime(); manager.setRepeating(AlarmManager.ELAPSED_REALTIME, triggerAtTime, seconds * 1000, pendingIntent); }