赞
踩
1、 使用Handler对象的postDelayed 方法:
- Handler TimerHandler=new Handler(); //创建一个Handler对象
-
- Runnable myTimerRun=new Runnable() //创建一个runnable对象
-
- {
-
- @Override
- public void run()
-
- {
-
- //要做的事情这里
-
- TimerHandler.postDelayed(this, 2000); //再次调用myTimerRun对象,实现每两秒一次的定时器操作
-
- }
-
- };
-
- TimerHandler.postDelayed(myTimerRun, 2000); //使用postDelayed方法,两秒后再调用此myTimerRun对象
-
-
-
- ...................
-
- TimerHandler.removeCallbacks(myTimerRun);//调用此方法,以关闭此定时器

2、使用Timer对象
- Timer timer = new Timer(); //创建一个定时器对象
-
- TimerTask task = new TimerTask() //创建定时器任务对象,必须实现run方法,在该方法中定义用户任务
-
- {
-
- @Override
-
- publicvoid run()
-
- {
-
- try
-
- {
-
- //希望定时器做什么,在此实现,
-
- //可以使用一个Handler对象,将定时消息传递到界面线程
-
- }catch (IOException e)
-
- {
-
- e.printStackTrace();
-
- }
-
- }
-
- };
-
- timer.schedule(task,0,10000); //启动定时器
-
-
-
- ...........
-
- timer.cancel(); // 该命用于以销毁定时器,一般可以在onStop里面调用
-

3、使用线程的方法
1)、定义一个线程类;也可用Runnable接口实现
- classtimerThread extends Thread {
-
- publicbStop=false; // 通过给bStop设置true而停止定时操作
-
- @Override
- publicvoid run() {
-
- while(! bStop)
-
- {
-
- try{
-
- Thread.sleep(1000);//每隔1s执行一次
-
- Messagemsg = new Message();
-
- msg.what= 1;
-
- handler.sendMessage(msg);
-
- }catch (InterruptedException e) {
-
- e.printStackTrace();
-
- }
-
- }
-
- }
-
- }

2)、在OnCreate中或其他希望创建定时器的位置加入以下代码:
- Handlerhandler = new Handler() {
-
- @Override
-
- public void handleMessage(Messagemsg) {
-
- if (msg.what == 1){
-
- //定时时间到,do something
-
- }
-
- }
-
- };
-
- newtimerThread ().start();

4、使用倒计时定时器CountDownTimer
以下代码每隔100毫秒执行onTick中的方法一次,直到执行完100次(=10000/100)执行onFinish()中的方法。
- CountDownTimer cdt = new CountDownTimer(10000, 100)//参数1:计时总时间,参数2:每次扣除时间数
-
- {
-
- @Override
-
- public void onTick(long millisUntilFinished)
-
- {
-
- //定时时间到执行动作;
-
- }
-
- @Override
-
- public void onFinish() {
-
-
-
- }
-
- };
-
- cdt.start();

在使用CountDownTimer时,在宿主Activity或fragment生命周期结束的时候,记得调用cdt.cancle()方法
- @Override
- publicvoid onDestroy() {
-
- if(cdt!=null){
-
- cdt.cancel();
-
- cdt= null;
-
- }
-
- super.onDestroy();
-
- }
-

5、使用alarmService。
AlarmManager在安卓中最常见使用的地方就是闹钟。看这个的名字就知道是启动一个系统级服务来完成的。
在Activity类定义中加入:
- privateString ACTION_NAME = "alarmService";
-
- privateBroadcastReceiver mBroadcastReceiver=null; //定义一个广播接收器变量
-
- privatevoid alarmServiceStart()
-
- {
-
- //注册广播
-
- IntentFiltermyIntentFilter = new IntentFilter();
-
- myIntentFilter.addAction(ACTION_NAME);
-
- registerReceiver(mBroadcastReceiver,myIntentFilter);
-
-
-
- //启动AlarmManager
- Intentintent =new Intent(ACTION_NAME);
- PendingIntentsender=PendingIntent.getBroadcast(this, 0, intent, 0);
-
- longfirstime= SystemClock.elapsedRealtime();
-
- AlarmManageram=(AlarmManager)getSystemService(ALARM_SERVICE);
-
-
- //5秒周期的发送广播
- am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,firstime,1000, sender);
- }
-

在OnCreate中加入
- mBroadcastReceiver= new BroadcastReceiver() //new 一个广播接收器
-
- {
-
- @Override
-
- public void onReceive(Context context,Intent intent)
-
- {
-
- String action = intent.getAction();
- if(action.equals(ACTION_NAME))
-
- {
-
- //定时时间到执行的动作;
- }
-
- }
-
- };
-
- alarmServiceStart();

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。