当前位置:   article > 正文

创建Android定时器的5种方法_android 写一个简单的定时器

android 写一个简单的定时器
1、 使用Handler对象的postDelayed 方法:

 

  1. Handler TimerHandler=new Handler(); //创建一个Handler对象
  2. Runnable myTimerRun=new Runnable() //创建一个runnable对象
  3. {
  4. @Override
  5. public void run()
  6. {
  7. //要做的事情这里
  8. TimerHandler.postDelayed(this, 2000); //再次调用myTimerRun对象,实现每两秒一次的定时器操作
  9. }
  10. };
  11. TimerHandler.postDelayed(myTimerRun, 2000); //使用postDelayed方法,两秒后再调用此myTimerRun对象
  12. ...................
  13. TimerHandler.removeCallbacks(myTimerRun);//调用此方法,以关闭此定时器

 

2、使用Timer对象

 

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

 

3、使用线程的方法

         1)、定义一个线程类;也可用Runnable接口实现

         

  1. classtimerThread extends Thread {
  2. publicbStop=false; // 通过给bStop设置true而停止定时操作
  3. @Override
  4. publicvoid run() {
  5. while(! bStop)
  6. {
  7. try{
  8. Thread.sleep(1000);//每隔1s执行一次
  9. Messagemsg = new Message();
  10. msg.what= 1;
  11. handler.sendMessage(msg);
  12. }catch (InterruptedException e) {
  13. e.printStackTrace();
  14. }
  15. }
  16. }
  17. }

        

         2)、在OnCreate中或其他希望创建定时器的位置加入以下代码:        

  1. Handlerhandler = new Handler() {
  2. @Override
  3. public void handleMessage(Messagemsg) {
  4. if (msg.what == 1){
  5. //定时时间到,do something
  6. }
  7. }
  8. };
  9. newtimerThread ().start();

 

4、使用倒计时定时器CountDownTimer      

         以下代码每隔100毫秒执行onTick中的方法一次,直到执行完100次(=10000/100)执行onFinish()中的方法。

         

  1. CountDownTimer cdt = new CountDownTimer(10000, 100)//参数1:计时总时间,参数2:每次扣除时间数
  2. {
  3. @Override
  4. public void onTick(long millisUntilFinished)
  5. {
  6. //定时时间到执行动作;
  7. }
  8. @Override
  9. public void onFinish() {
  10. }
  11. };
  12. cdt.start();

 

         在使用CountDownTimer时,在宿主Activity或fragment生命周期结束的时候,记得调用cdt.cancle()方法

        

  1. @Override
  2. publicvoid onDestroy() {
  3. if(cdt!=null){
  4. cdt.cancel();
  5. cdt= null;
  6. }
  7. super.onDestroy();
  8. }

5、使用alarmService。

         AlarmManager在安卓中最常见使用的地方就是闹钟。看这个的名字就知道是启动一个系统级服务来完成的。

 

         在Activity类定义中加入:

 

         

  1. privateString ACTION_NAME = "alarmService";
  2. privateBroadcastReceiver mBroadcastReceiver=null; //定义一个广播接收器变量
  3. privatevoid alarmServiceStart()
  4. {
  5. //注册广播
  6. IntentFiltermyIntentFilter = new IntentFilter();
  7. myIntentFilter.addAction(ACTION_NAME);
  8. registerReceiver(mBroadcastReceiver,myIntentFilter);
  9. //启动AlarmManager
  10. Intentintent =new Intent(ACTION_NAME);
  11. PendingIntentsender=PendingIntent.getBroadcast(this, 0, intent, 0);
  12. longfirstime= SystemClock.elapsedRealtime();
  13. AlarmManageram=(AlarmManager)getSystemService(ALARM_SERVICE);
  14. //5秒周期的发送广播
  15. am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,firstime,1000, sender);
  16. }

         在OnCreate中加入

         

  1. mBroadcastReceiver= new BroadcastReceiver() //new 一个广播接收器
  2. {
  3. @Override
  4. public void onReceive(Context context,Intent intent)
  5. {
  6. String action = intent.getAction();
  7. if(action.equals(ACTION_NAME))
  8. {
  9. //定时时间到执行的动作;
  10. }
  11. }
  12. };
  13. alarmServiceStart();

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/240618
推荐阅读
相关标签
  

闽ICP备14008679号