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开发中,消息处理机制是非常重要的一个组成部分,它确保了应用程序能够在不同线程之间有效地传递数据和指令,尤其是在更新用户界面(UI)时。本文将详细介绍Android消息处理机制的核心概念、工作原理以及其实...
在C#编程语言中,消息处理机制是一种核心的特性,它涉及到用户界面(UI)的交互和事件驱动编程。理解这一机制对于开发高效、响应性强的应用程序至关重要。本文将深入探讨C#的消息处理机制,包括事件、委托、事件处理...
当UI更新频繁或处理大量数据时,如果这些操作都在主线程上进行,就可能导致界面卡顿,用户体验下降。为了解决这个问题,WPF引入了多线程技术,允许开发者在后台线程处理耗时任务,然后通过特定的方式安全地更新UI。 ...
通过这样的方式,我们可以在子线程处理数据后,通过消息机制将结果传递到主线程,由主线程安全地更新UI。 此外,还有一种常见的替代方案是使用`AsyncTask`类,它同样支持在后台线程执行任务并在适当的时候更新UI。...
在Android系统中,消息处理机制是至关重要的,它允许开发者在不同的线程间进行通信,尤其是主线程(UI线程)与其他工作线程之间。这一机制主要涉及到两个关键组件:`Looper`和`Handler`。下面我们将深入探讨这两个...
为了解决这个问题,Android提供了多种异步处理机制,其中一种常见的方式是使用`Thread`配合`Handler`来实现非UI线程执行耗时任务并更新UI。本篇将详细介绍这一方法。 首先,我们需要理解Android的线程模型。Android...
由于Android系统的安全机制,直接在子线程中修改UI是不允许的,因此我们需要通过特定的方式来实现子线程与UI线程之间的通信,以便在子线程完成任务后,能够安全地更新UI。`AndroidUIUpDemo`这个项目应该是一个展示...
在Android应用开发中,Handler是实现线程间...总结起来,“Android Handler定时更新UI”涉及到了多线程、消息处理机制、UI更新规则等关键知识点。熟练掌握这些技能,能够帮助开发者编写出更加流畅、高效的Android应用。
Android消息处理机制是Android系统中实现线程间通信和异步操作的核心机制,它由Message、Handler、Looper和MessageQueue四个关键组件组成。对于新手来说,掌握这一机制至关重要,因为它是构建高性能、响应式应用程序...
3. **跨线程访问控件**:由于.NET Framework的安全机制,直接从非UI线程修改UI控件是不允许的。为了解决这个问题,可以使用控件的`Invoke`或`BeginInvoke`方法。这两个方法会在UI线程上执行传入的委托,从而安全地...
为了解决这个问题,WPF引入了`Dispatcher`机制,允许后台线程安全地更新UI。 `Dispatcher`是WPF中的一个关键概念,它是线程调度器,负责协调不同线程对UI元素的操作。当后台线程需要修改UI时,必须通过`Dispatcher`...
在Qt编程中,UI(用户界面)的更新通常在主线程中进行,因为GUI(图形用户界面)组件的渲染和事件处理是与主线程紧密关联的。然而,当执行耗时的操作,如网络请求、大数据处理或长时间计算时,如果在主线程中执行,...
### Android的消息处理机制详解 #### 一、引言 Android应用程序是通过消息驱动的,它借鉴了Windows的消息处理机制,并在此基础上实现了一套适合移动设备的处理机制。本篇文章将详细探讨Android的消息处理机制,...
Handler异步消息处理机制在Android开发中扮演着重要的角色,特别是在处理UI更新和与主线程交互时。在“Handler异步加载图片 GridView 上拉刷新 下拉刷新”这个主题中,我们将深入探讨如何利用Handler实现图片的异步...
总结起来,Android的Handler消息处理机制是实现线程间通信和异步任务处理的核心工具,它确保了对UI的修改总是在正确的线程(主线程)中进行,避免了因不恰当的线程操作导致的应用程序崩溃。理解和熟练掌握这一机制,...
"Android广播onReceiver回调更新ui"这个主题主要涉及如何在广播接收器中处理接收到的广播消息,并在用户界面(UI)上做出相应的更新。我们将深入探讨以下几个关键知识点: 1. **广播机制**: Android系统通过发送...
线程机制
Android应用程序与传统的PC应用程序一样,都是消息驱动的。也就是说,在Android应用程序主线程中,所有函数都是在一个...掌握Android应用程序消息处理机制,有助于我们熟练地使用同步和异步编程,提高程序的运行性能
// 在这里处理接收到的消息,例如更新UI } } @Override public IBinder onBind(Intent intent) { return mMessenger.getBinder(); } } ``` 2. 设置Intent过滤器: 在AndroidManifest.xml中,我们需要为...