Android 实现界面刷新的几种方法

所属分类: 软件编程 / Android 阅读数: 38
收藏 0 赞 0 分享

Android 界面刷新

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

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

利用Handler刷新界面

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


    // 在onCreate()中开启线程

    new Thread(new GameThread()).start();、

 

    // 实例化一个handler

    Handler 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();

           }

       }

    }

 

参考:

Android应用开发揭秘

Android文档

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

更多精彩内容其他人还在看

android byte[] 和short[]转换的方法代码

这篇文章主要介绍了android byte[] 和short[]转换的方法代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android获取应用程序大小的方法

这篇文章主要介绍了Android获取应用程序大小的方法,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android获取其他包的Context实例代码

这篇文章主要介绍了Android获取其他包的Context实例代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android放大镜的实现代码

这篇文章主要介绍了Android放大镜的实现代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android 读取Properties配置文件的小例子

这篇文章主要介绍了Android 读取Properties配置文件的小例子,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android通讯录开发之删除功能的实现方法

这篇文章主要介绍了Android通讯录开发之删除功能的实现方法,有需要的朋友可以参考一下
收藏 0 赞 0 分享

使用ViewPager实现android软件使用向导功能实现步骤

现在的大部分android软件,都是使用说明,就是第一次使用该软件时,会出现向导,可以左右滑动,然后就进入应用的主界面了,下面我们就实现这个功能
收藏 0 赞 0 分享

android在异步任务中关闭Cursor的代码方法

android在异步任务中如何关闭Cursor?在我们开发应用的时候,很多时候会遇到这种问题,下面我们就看看代码如何实现
收藏 0 赞 0 分享

Android自定义桌面功能代码实现

android自定义桌面其实很简单,看一个例子就明白了
收藏 0 赞 0 分享

android将图片转换存到数据库再从数据库读取转换成图片实现代码

有时候我们想把图片存入到数据库中,尽管这不是一种明智的选择,但有时候还是不得以会用到,下面说说将图片转换成byte[]数组存入到数据库中去,并从数据库中取出来转换成图像显示出来
收藏 0 赞 0 分享
查看更多