`
喧嚣求静
  • 浏览: 580488 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

UI更新及消息处理机制

阅读更多
ps:最近学习的知识太广而没深入了解,全因工作紧张,要短期内全面了解android,没办法只有走马观花,一睹android全貌。由于只是一扫而过,心中只留下概念,没有明白原理,故用到时又得google,特花精力和时间,所以自己决定,把学习过程中点滴全记录在博客上,方便自己用时查找,同时也方便感兴趣的朋友学习。
the Andoid UI toolkit is not thread-safe. So, you must not manipulate your UI from a worker thread—you must do all manipulation to your user interface from the UI thread. Thus, there are simply two rules to Android's single thread model:

    Do not block the UI thread
    Do not access the Android UI toolkit from outside the UI thread

For example, below is some code for a click listener that downloads an image from a separate thread and displays it in an ImageView:
public void onClick(View v) {
    new Thread(new Runnable() {
        public void run() {
            Bitmap b = loadImageFromNetwork("http://example.com/image.png");
            mImageView.setImageBitmap(b);
        }
    }).start();
}

To fix this problem, Android offers several ways to access the UI thread from other threads. Here is a list of methods that can help:

    1.Activity.runOnUiThread(Runnable)
    2.View.post(Runnable)
    3.View.postDelayed(Runnable, long)
    4.Using AsyncTask
    5.android.view.View.postInvalidate()
       Cause an invalidate to happen on a subsequent cycle through the event loop.
public void onClick(View v) {
    new Thread(new Runnable() {
        public void run() {
            final Bitmap bitmap = loadImageFromNetwork("http://example.com/image.png");
            mImageView.post(new Runnable() {
                public void run() {
                    mImageView.setImageBitmap(bitmap);
                }
            });
        }
    }).start();
}


Looper,Handler,Message源码分析
更新UI界面一
更新UI界面二

google官方关于UI更新及线程

invalidate()和postInvalidate() 的区别及使用
Android自定义View中界面刷新的方法 nvalidate()和postInvalidate() 的区别及使用
分享到:
评论

相关推荐

    Android的消息处理机制

    在Android开发中,消息处理机制是非常重要的一个组成部分,它确保了应用程序能够在不同线程之间有效地传递数据和指令,尤其是在更新用户界面(UI)时。本文将详细介绍Android消息处理机制的核心概念、工作原理以及其实...

    C#消息处理机制

    在C#编程语言中,消息处理机制是一种核心的特性,它涉及到用户界面(UI)的交互和事件驱动编程。理解这一机制对于开发高效、响应性强的应用程序至关重要。本文将深入探讨C#的消息处理机制,包括事件、委托、事件处理...

    WPF 使用线程更新UI

    当UI更新频繁或处理大量数据时,如果这些操作都在主线程上进行,就可能导致界面卡顿,用户体验下降。为了解决这个问题,WPF引入了多线程技术,允许开发者在后台线程处理耗时任务,然后通过特定的方式安全地更新UI。 ...

    Android_子线程创建消息队列更新UI

    通过这样的方式,我们可以在子线程处理数据后,通过消息机制将结果传递到主线程,由主线程安全地更新UI。 此外,还有一种常见的替代方案是使用`AsyncTask`类,它同样支持在后台线程执行任务并在适当的时候更新UI。...

    Android的消息处理机制--Looper,Handler

    在Android系统中,消息处理机制是至关重要的,它允许开发者在不同的线程间进行通信,尤其是主线程(UI线程)与其他工作线程之间。这一机制主要涉及到两个关键组件:`Looper`和`Handler`。下面我们将深入探讨这两个...

    ndroid异步处理一:使用Thread+Handler实现非UI线程更新UI界面

    为了解决这个问题,Android提供了多种异步处理机制,其中一种常见的方式是使用`Thread`配合`Handler`来实现非UI线程执行耗时任务并更新UI。本篇将详细介绍这一方法。 首先,我们需要理解Android的线程模型。Android...

    安卓UI线程和子线程通讯更新UI实例

    由于Android系统的安全机制,直接在子线程中修改UI是不允许的,因此我们需要通过特定的方式来实现子线程与UI线程之间的通信,以便在子线程完成任务后,能够安全地更新UI。`AndroidUIUpDemo`这个项目应该是一个展示...

    Android Handler定时更新UI

    在Android应用开发中,Handler是实现线程间...总结起来,“Android Handler定时更新UI”涉及到了多线程、消息处理机制、UI更新规则等关键知识点。熟练掌握这些技能,能够帮助开发者编写出更加流畅、高效的Android应用。

    Android消息处理机制

    Android消息处理机制是Android系统中实现线程间通信和异步操作的核心机制,它由Message、Handler、Looper和MessageQueue四个关键组件组成。对于新手来说,掌握这一机制至关重要,因为它是构建高性能、响应式应用程序...

    Winform实现多线程异步更新UI(进度及状态信息)

    3. **跨线程访问控件**:由于.NET Framework的安全机制,直接从非UI线程修改UI控件是不允许的。为了解决这个问题,可以使用控件的`Invoke`或`BeginInvoke`方法。这两个方法会在UI线程上执行传入的委托,从而安全地...

    WPF后台线程更新UI

    为了解决这个问题,WPF引入了`Dispatcher`机制,允许后台线程安全地更新UI。 `Dispatcher`是WPF中的一个关键概念,它是线程调度器,负责协调不同线程对UI元素的操作。当后台线程需要修改UI时,必须通过`Dispatcher`...

    qt编程_在子线程中更新UI界面

    在Qt编程中,UI(用户界面)的更新通常在主线程中进行,因为GUI(图形用户界面)组件的渲染和事件处理是与主线程紧密关联的。然而,当执行耗时的操作,如网络请求、大数据处理或长时间计算时,如果在主线程中执行,...

    Android的消息处理机制--Message,MessageQueue

    ### Android的消息处理机制详解 #### 一、引言 Android应用程序是通过消息驱动的,它借鉴了Windows的消息处理机制,并在此基础上实现了一套适合移动设备的处理机制。本篇文章将详细探讨Android的消息处理机制,...

    Handler异步消息处理机制创建图加载类

    Handler异步消息处理机制在Android开发中扮演着重要的角色,特别是在处理UI更新和与主线程交互时。在“Handler异步加载图片 GridView 上拉刷新 下拉刷新”这个主题中,我们将深入探讨如何利用Handler实现图片的异步...

    Android_Handler消息处理机制

    总结起来,Android的Handler消息处理机制是实现线程间通信和异步任务处理的核心工具,它确保了对UI的修改总是在正确的线程(主线程)中进行,避免了因不恰当的线程操作导致的应用程序崩溃。理解和熟练掌握这一机制,...

    Android广播onReceiver回调更新ui

    "Android广播onReceiver回调更新ui"这个主题主要涉及如何在广播接收器中处理接收到的广播消息,并在用户界面(UI)上做出相应的更新。我们将深入探讨以下几个关键知识点: 1. **广播机制**: Android系统通过发送...

    UI线程机制.htm

    线程机制

    Android应用程序消息处理机制

    Android应用程序与传统的PC应用程序一样,都是消息驱动的。也就是说,在Android应用程序主线程中,所有函数都是在一个...掌握Android应用程序消息处理机制,有助于我们熟练地使用同步和异步编程,提高程序的运行性能

    通过Messenger实现Android Service更新UI

    // 在这里处理接收到的消息,例如更新UI } } @Override public IBinder onBind(Intent intent) { return mMessenger.getBinder(); } } ``` 2. 设置Intent过滤器: 在AndroidManifest.xml中,我们需要为...

Global site tag (gtag.js) - Google Analytics