`
alienjun
  • 浏览: 11630 次
  • 性别: Icon_minigender_1
  • 来自: 广西
最近访客 更多访客>>
社区版块
存档分类
最新评论

界面刷新invalidate(),postInvalidate()

 
阅读更多
第一种解决方案是:
class UIUpdateThread implements Runnable{

            public void run() {
                try {
                    Thread.sleep(1000*5);
                    mHandler.post(mUpdateResults);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                
            }
            
             final Handler mHandler = new Handler();
                final Runnable mUpdateResults = new Runnable() {
                    public void run() {
                        invalidate(); //更新视图
                    }
                };
            
}

第二种:
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 楼 sdlcweichaohui 2012-12-01  
请问代码中 mGameView 是什么东东?  新手学习,谢谢。

相关推荐

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

    Android程序中可以使用的界面刷新方法有两种,分别是利用Handler和利用postInvalidate()来实现在线程中刷新界面。 利用Handler刷新界面 实例化一个Handler对象,并重写handleMessage方法调用invalidate()实现界面...

    android中Invalidate和postInvalidate的更新view区别

    `Invalidate`和`postInvalidate`是Android提供的两种主要的View刷新机制,它们虽然都能达到更新界面的效果,但在使用场景和执行机制上有所区别。 首先,`Invalidate`方法是直接在UI线程中调用的。当调用一个View的`...

    Android中刷新界面的二种方法

    本文将详细介绍两种在Android中在线程中刷新界面的方法:Handler和postInvalidate()。 1. 利用Handler刷新界面 Handler是Android中用于线程间通信的重要工具,它允许你在后台线程发送消息到主线程,并在主线程中...

    Android界面刷新的方法分享

    在 Android 中,界面的刷新可以通过多种方式实现,本文将分享两种常见的 Android 界面刷新方法:利用 Handler 和利用 postInvalidate()。 利用 Handler 刷新界面 在 Android 中,UI 操作并不是线程安全的,这意味...

    Android中invalidate()和postInvalidate() 的区别及使用方法

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

    android动态刷新界面

    2. `postInvalidate()`: 如果你需要在非UI线程中更新界面,可以使用`postInvalidate()`,它会在UI线程的下一次事件循环中调用`invalidate()`,确保安全地更新界面。 3. `onDraw()`: 当View需要重新绘制时,系统会...

    分析invalidate流程例子

    在Android开发中,`Invalidate`是一个至关重要的概念,它涉及到UI更新机制,与用户界面的刷新和重绘紧密相关。当我们对一个View调用`invalidate()`方法时,实际上是触发了该View的重新绘制过程。这个过程涉及到多个...

    Android中View绘制流程以及invalidate()

    `invalidate()`的内部实现会调用`postInvalidate()`,如果当前View不在UI线程,`postInvalidate()`会将其加入到消息队列中,等待主线程处理。而在主线程中,`invalidate()`会直接触发`draw()`方法,从而启动绘制流程...

    Android-UI刷新

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

    为何SurfaceView能够在非UI线程中刷新界面(内容为代码的demo而并非文档)

    当你调用`View`的`postInvalidate()`或`invalidate()`方法时,会触发一个消息,这个消息会在主线程的消息队列中排队,然后在下一个合适的时刻执行实际的重绘操作。 相比之下,`SurfaceView`有自己的`SurfaceHolder`...

    Android应用源码之自定义表格自动刷新数据.zip

    当界面需要更新时,应调用`View`的`invalidate()`或`postInvalidate()`方法,这会将一个消息放入队列,由主线程的`Looper`取出并执行`onDraw()`。 6. **性能优化**: 自定义表格时要考虑性能问题,比如使用`...

    Adroid UI 界面绘制原理分析.zip

    同时,还可以利用`postInvalidate()`或`invalidate()`异步刷新界面,避免阻塞主线程。 为了优化UI性能,开发者可以采用一些策略,比如使用`ViewStub`延迟加载不立即显示的View,减少无效的绘制;使用`RecyclerView`...

    安卓自定义控件相关-文字飞入飞出效果自定义View随机刷新数据.rar

    `Invalidate()`或`postInvalidate()`方法用于告诉Android系统View需要更新其显示内容。在自定义View中,我们需要在`onDraw()`方法中正确地处理这些新的数据,并根据数据的变化重新绘制文字。 文件名中的“自定义...

    android控件在界面上自由拖动位置显示

    避免在`onTouchEvent`中执行耗时的操作,考虑使用`postInvalidate()`异步刷新界面,而不是立即调用`invalidate()`。 8. **兼容性测试**: 确保自定义拖动控件在不同设备和Android版本上表现一致,进行广泛的设备和...

    Android View刷新机制实例分析

    在Android开发中,View刷新机制是至关重要的一个环节,它涉及到UI界面的更新与渲染。本文将通过实例分析,深入探讨Android View的刷新机制,包括其功能、原理以及实际应用中的使用技巧。 首先,我们来看一下总体...

    Android自定义带圆点的半圆形进度条

    在Android中,Invalidate方法和postInvalidate方法都是用来刷新界面的,但是它们之间有着很大的区别。Invalidate方法只能在UI线程中调用,而postInvalidate方法可以在工作线程中调用。因此,在使用postInvalidate...

    10编写推箱子游戏程序(第五步)

    这两个方法都是用来刷新视图的,`postInvalidate()`会在UI线程的下一个循环中执行,而`invalidate()`会立即执行,但考虑到性能优化,通常推荐使用`postInvalidate()`。 为了防止搬运工走出游戏区域,我们需要在处理...

Global site tag (gtag.js) - Google Analytics