在 Android中,有时候我们需要固定几秒后去执行一个动作,比如进入某个页面然后过几秒去刷新,下面看看怎么实现:

方式一(使用handler):

  new Handler(new Handler.Callback() {            @Override            public boolean handleMessage(Message message) {                Toast.makeText(MainActivity.this,"定时时间到...",Toast.LENGTH_SHORT).show();                return false;            }        }).sendEmptyMessageDelayed(0,3000);

延迟3秒发送一个消息,然后在handleMessage方法里面执行动作。

方式二(使用定时任务):

  new Timer().schedule(new TimerTask() {            @Override            public void run() {                Looper.prepare();                Toast.makeText(MainActivity.this,"定时时间到...",Toast.LENGTH_SHORT);                Looper.loop();            }        },3000);

关于上面两个方法我想讲一下两个地方:
1.handleMessage的返回值代表什么意思?
callBack{}是一个接口的回调,当我们使用的时候调用里面的handleMessage(msg)时是一个带返回值的,我们可以通过对这个返回值值的控制来打断handle的消息传递机制,如果我们返回的是false的话那么就不会打断handle对消息的处理,如果返回值设置为true那么将不会执行handle的消息处理只会执行callback{}里面的handleMessage()方法。
2.Toast为什么要使用Looper?
因为TimerTask实现了Runnable接口,所以run方法是执行在子线程中的,当Toast对象在创建的过程中依赖一个handler,handler的使用是依赖looper的,而在子线程中并没有Looper对象,如果不使用Looper.prepare,会报出下面这个错:

所以,必须使用Looper.prepare为当前线程创建一个Looper对象,然后调用Looper.loop()方法使它工作起来。

更多相关文章

  1. Android(安卓)消息机制学习
  2. Android(安卓)设置Dialog不允许返回或搜索键消除
  3. Android(安卓)LayoutInflater.inflate()方法的参数用途
  4. ListView/GridView 按住拖动黑线框/桌面背景透上来【已解决】
  5. Android(安卓)Activity 二
  6. startActivity调用流程及生命周期
  7. android下图片处理方法[转]
  8. Android-- Toast通知的用法
  9. 【Android】NDK中log输出方法

随机推荐

  1. MacAndroid源码下载 Android10详解
  2. 一起Talk Android吧(第二百六十五回:Androi
  3. Android中Activity, View,Window,DecorVi
  4. Android(安卓)Socket与HTTPS校验
  5. 超新鲜的字节客户端Android面经,附面试题
  6. 2015年11月广师android群内容分享
  7. Android手机分辨率问题
  8. 在android上向nodejs中添加第三方node模
  9. daliu_IT学习Android笔记第一篇--Android
  10. android博客导航总结,以及个人常用android