`
喧嚣求静
  • 浏览: 553107 次
  • 性别: 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() 的区别及使用
分享到:
评论

相关推荐

    UI线程机制.htm

    线程机制

    Android应用程序消息处理机制

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

    Android编程实现异步消息处理机制的几种方法总结

    Handler是Android提供用来异步更新UI的一套机制,也是一套消息处理机制,可以用它来发送消息,也可以用它来接收消息。 二、为什么使用Handler Android在设计之时,就封装了一套消息的创建、传递、处理机制,作为系统...

    AsyncTaskDemo异步消息处理机制

    Android 提供了一个好用的工具---AsyncTask ,方便我们在子线程中对 UI 进行操作,AsyncTask 背后的实现原理也是基于异步消息处理机制的。

    Android的消息处理机制

    详细描述了Android的UI主线程和子线程的消息通信机制,提供了一些参考代码

    Android消息处理机制Looper和Handler详解

    使用Handler时,需要实现handleMessage(Message msg)方法来对特定的Message进行处理,例如更新UI等。 MessageQueue:消息队列,用来存放Handler发送过来的消息,并按照FIFO规则执行。当然,存放Message并非实际意义...

    Android 消息机制详解及实例代码

    Android应用启动时,会默认有一个主线程(UI线程),在这个线程中会关联一个消息队列(MessageQueue),所有的操作都会被封装成消息队列然后交给主线程处理。为了保证主线程不会退出,会将消息队列的操作放在一个死...

    genesis OSD UI平台教程

    传统的处理手法是将特定场景下的OSD物件逐一用代码“画”出来,在遇到特定的UI事件时,再利用一堆if else判断出特定场景和操作对象,并做相应的OSD处理。在OSD较简单的情况下,其不失为一个可行的方法。但在遇到OSD...

    xamarin学习笔记A13(安卓Handler异步消息处理)

    xamarin学习笔记A13(安卓Handler异步消息处理)Android中只能在主线程进行UI操作,不能在子线程操作,要根据子线程执行的结果来更新UI时,需要用到安卓异步消息处理机制。

    android学习笔记之handler消息处理机制1

    但为了执行一些耗时操作,往往会将它们放在子线程中,执行完毕要更新主线程中的UI,所以就有了handler消息处理机制。 handler就相当于一个中转站,子线程通过sendMessage()等方法,将消息发送给handler对象,handler...

    ligerui-LigerRM-V2

    Sales Representative 1 test5 供应商1 供应商1 - Exotic Liquids44 1 系统特色 1,不采用code-behind机制,不使用任何服务器控件,全面将工作放在前台实现,后台只处理数据部分。页面还是用aspx后缀,继承于统一的...

    Android 线程开发 开发实例

    针对这种消息循环的机制,我们引入一个新的机制Handle,我们有消息循环,就要往消息循环里 面发送相应的消息,自定义消息一般都会有自己对应的处理,消息的发送和清除,消息的的处理,把这些都封装在Handle里面,...

    安卓基本知识值时间处理机制学习源代码

    安卓基本知识值时间处理机制学习源代码,对于初学者来说,学习完UI组件,就要学习安卓一些基本组件与机制了。。

    基于 ligerui 的web应用系统

    基于 ligerui 的web应用系统,不采用code-behind机制,不使用任何服务器控件,全面将工作放在前台实现,后台只处理数据部分。页面还是用aspx后缀,继承于统一的页面基类(为了方便权限的控制)。数据库是access,完整...

    详解Android的两种事件处理机制

    UI编程通常都会伴随事件处理,Android也不例外,它提供了两种方式的事件处理:基于回调的事件处理和基于监听器的事件处理。 对于基于监听器的事件处理而言,主要就是为Android界面组件绑定特定的事件监听器;对于...

    Java编程实训 Java开发基础入门教程1-09 Java异常处理机制和调试(共32页).pptx

    【完整课程列表】 ...09 Java异常处理机制和调试(共32页).ppt 10 java集合框架(共27页).ppt 11 JAVA UI swing编程基础(共39页).ppt 12 AWT布局管理器(共14页).ppt 13 AWT事件处理模型(共29页).ppt

    Android6.0 消息机制原理解析

    如果队列中有消息,消息循环线程就会把它取出来,并分发给相应的Handler进行处理;如果队列中没有消息,消息循环线程就会进入空闲等待状态,等待下一个消息的到来。在编写Android应用程序时,当程序执行的任务比较...

    Python实现处理机和进程调度算法及内存分配回收机制源码+项目说明+代码注释(附Vue前端源码).zip

    Python实现处理机和进程调度算法及内存分配回收机制源码+项目说明+代码注释(附Vue前端源码).zip 多道程序系统中,进程与进程之间存在同步与互斥关系。当就绪进程数大于处理机数时,需按照某种策略决定哪些进程先占用...

    Android中Handler消息传递机制

    在Android的应用启动时,会创建一个主线程,主线程会创建一个消息队列来处理各种消息。当你创建子线程时,你可以在你的子线程中拿到父线程中创建的Handler 对象,就可以通过该对象向父线程的消息队列发送消息了。...

    Android HandlerDemo

    二是方便统一管理,通过Handler可以统一进行对UI的管理,因为Handler采用消息处理的机制。就是另一个线程发送一个编号给消息所在的线程,那么该线程的消息处理程序就会收到该消息并进行处理,而消息采用int类型,...

Global site tag (gtag.js) - Google Analytics