Android实现定时器的几种方法
前言
正文
AlarmManager
AlarmManager am = (AlarmManager)mContext.getSystemService(Context.ALARM_SERVICE);// Schedule the alarm!Intent intent = new Intent(XXXXX);PendingIntent sender = PendingIntent.getBroadcast(mcontext,requestCode, intent, 0);am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,firstTime, 30*1000, sender);
<receiver android:name="com.xxxx.Receiver" android:process=":remote" />优点总结##
适用场景##
Handler
private Handler handler = new Handler() {public void handleMessage(android.os.Message msg) {switch (msg.what) {case 0:// 移除所有的msg.what为0等消息,保证只有一个循环消息队列再跑handler.removeMessages(0);// app的功能逻辑处理...// 再次发出msg,循环更新handler.sendEmptyMessageDelayed(0, 1000);break;case 1:// 直接移除,定时器停止handler.removeMessages(0);break;default:break;}};};
优点总结##
适用场景##
Timer
// 初始化定时器Timer timer = new Timer();timer.schedule(new TimerTask() {@Overridepublic void run() {Log.e("lzp", "timer excute");}}, delay, period);// 停止定时器private void stopTimer(){if(timer != null){timer.cancle();// 一定设置为null,否则定时器不会被回收timer = null;}}
period:定时器的间隔时间。
优点总结##
适用场景
**
Thread##
private MyThread thread;private class MyThread extends Thread {public boolean stop;public void run() {while (!stop) {// 处理功能// 通过睡眠线程来设置定时时间try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}};};/*** 启动线程* */private void start() {if (thread == null) {thread = new MyThread();thread.start();}}/*** 停止线程* */private void stop() {if (thread != null) {thread.stop = true;thread = null;}}
优点总结
适用场景
结尾
以上就是我个人使用过的定时器的几种实现的方法,但是都仅仅是简单的介绍,更为详细的用法在网上有很多相关的资料.
评论
