Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用。

Android界面刷新方法有两种,分别是利用Handler和利用postInvalidate()来实现在线程中刷新界面。

利用Handler刷新界面
实例化一个Handler对象,并重写handleMessage方法调用invalidate()实现界面刷新;而在线程中通过sendMessage发送界面更新消息。

// 在onCreate()中开启线程new Thread(new GameThread()).start(); // 实例化一个handlerHandler myHandler = new Handler() {    //接收到消息后处理    public void handleMessage(Message msg) {        switch (msg.what) {        case Activity01.REFRESH:            mGameView.invalidate();//刷新界面            break;        }        super.handleMessage(msg);    }                 }; class GameThread implements Runnable {    public void run() {        while (!Thread.currentThread().isInterrupted()) {            Message message = new Message();            message.what = Activity01.REFRESH;            //发送消息            Activity01.this.myHandler.sendMessage(message);            try {                Thread.sleep(100);            }            catch (InterruptedException e) {                Thread.currentThread().interrupt();            }        }    }}

使用postInvalidate()刷新界面
使用postInvalidate则比较简单,不需要handler,直接在线程中调用postInvalidate即可。

class GameThread implements Runnable {    public void run() {        while (!Thread.currentThread().isInterrupted()) {            try {                Thread.sleep(100);            }            catch (InterruptedException e) {                Thread.currentThread().interrupt();            }             // 使用postInvalidate可以直接在线程中更新界面            mGameView.postInvalidate();        }    }}

更多相关文章

  1. Android(安卓)MVP开发模式 google 官方Mvp架构详解(转)
  2. Android模拟器RAM修改方法 - 尤其是3.0
  3. android中版本webView中js不执行问题
  4. 异步任务加载网络数据——AsyncTask使用
  5. android studio中常用快捷键
  6. Android应用程序开发以及背后的设计思想深度剖析 (1)
  7. Android(安卓)消息机制之Message
  8. Android(安卓)ViewPager使用详解
  9. Android使用setCustomTitle()方法自定义对话框标题

随机推荐

  1. 商城列表页和商品详情页
  2. 淘宝 NPM 镜像站切换新域名啦(转载)
  3. 模仿拼多多小程序自动登录思想
  4. 简单理解vuex
  5. 强大的Python图像处理
  6. 应对职场面试官——(绝佳良药奉上)
  7. PHP 编程中最常见的错误,你犯过几个?(收藏篇
  8. psutil 系统操作利器
  9. Python 操作系统级别模块Psutil
  10. 有哪些可以提高效率的Git技巧