Android中关于Handle的用法和分析


   

       

           

Android中关于Handle的用法和分析


           

               

                    原创
                    2016年02月28日 15:40:50
               

               
           

           

                

Handler


1.作用:


(1). 结合Thread实现连网读取数据,读取数据后更新页面,即从子线程给主线程提供一个消息报告的作用


因此主线程中一旦接收到此消息报告,即可更新页面。


(2). 指定一系列的动作排队执行


2.实现步骤:


1. 创建Handler对象


注:在new对象的结尾添加{},并重写handleMessage方法


2. 通过handler发送消息


      2.1在发送消息时可选择发送空消息或者非空消息


            非空消息与空消息的区别:


                   空消息中只能携带一个int类型的数字


                  非空消息中除了可以携带int类型的数字外,还可携带一些其他数据


            发送消息时可选择的方法:


                     a) sendEmptyMessageint what)发送空消息


                        参数作用:给当前发送的消息匹配一个唯一标识 由于所有通过handler对象发送的消息,最后都会到同一个        handleMessage方法中进行接收


                        因此,为了handleMessage方法中区分当前接收的消息是哪一个条通过msg对象的what属性进行判断


                     b) sendMessage (Message msg)   发送非空消息


       2.2发送步骤:


                     1)封装要发送的Message对象


                      初始化方式有以下3种:


                        Message msg = new Message();


                        Message msg = Message.obtain();


                        Message msg = handler.obtainMessage();


                        推荐选择后两种方式的任意一种进行初始化,不推荐使用new Message方法获取对象


原因:后两种方式在创建对象时会去判断内存中是否有能够直接使用的Message对象,如果有,直接拿来用,


如果没有,再新建对象使用。通过后两种方式可以减少创建对象的个数,在内存方面比较优化


                      2) 通过调用msg.what = n(任意数字)给当前封装的msg对象的what属性赋值


                      3) Message对象中添加要携带的数据


可选的添加数据的方式:


(1) msg.obj = Object(任意类型的对象)   msg对象的obj属性赋值


(2) 通过msg对象的arg1arg2属性携带数据,添加数据的方式与obj属性相同msg.属性名 =  赋值;


           此两条属性只能携带int类型的数据


(3) 通过msg对象的setData(Bundle args)方法携带数据


对应的取出数据的方式:


handleMessage方法中,通过参数msg对象


(1) Object o = msg.obj;  取出msg对象的obj属性的值


注:接收该属性的对象可以按需求写成任意类型


如,接收的是一个Bitmap图片数据


则可:Bitmap o= Bitmapmsg.obj;


(2) 通过msg.arg1进行取值即可


(3) 通过msg.getData 先取出传递过来的Bundle对象,然后通过Bundle对象调用get方法根据key取出对应的value


应该在什么情况下选择哪种方式携带数据?


1. 如果要携带的数据的类型和个数不超出2int1个任意类型时,推荐直接使用对应的属性进行携带


2. 如果要携带的数据的类型或者个数超出上述的限制,那么使用setData方法进行携带


3. 在handleMessage中接收通过sendEmptyMessage或者通过sendMessage方法发送过来的消息


4. 通过handleMessage方法中的参数msg对象获取msg.what属性的值即可区分当前接收的是哪一个发送过来的消息


使用Handler时的注意事项:


1. handleMessage名称不要写错,参数列数不要修改


2. 在初始化Handler对象,重写handleMessage方法的时候,注意不要写成以下格式:


3. 在一个Activity中支持创建多个Handler对象,当发送消息后,由哪个handleMessage方法进行消息的处理,取决于发送消息的对象是哪个------哪个handler对象发送的消息,就有哪个handler对象进行消息的处理


4. handler对象的发送消息方法并不会阻塞主线程的运行,即如果在发送消息的代码后方有其他代码,那么不会等到消息处理完后再后续代码,而是直接运行后续代码



           

       

       
       

            版权声明:本文为博主原创文章,未经博主允许不得转载。
            举报
       

       
       
       
       

           

               

                   
           
                   


                       

                           
                           

                               

                                   
                               



                               
                               
                               
                               

                               


                               

                                    HTML/XML
                                    objective-c
                                    Delphi
                                    Ruby
                                    PHP
                                    C#
                                    C++
                                    JavaScript
                                    Visual Basic
                                    Python
                                    Java
                                    CSS
                                    SQL
                                    其它
                                   
                               

                           

                       

                   

               

           

       



       

  暂无评论




       


       

相关文章推荐


       

            
           

               

                   

android handle 用法


                   

                        方法一:(java习惯,在android平台开发时这样是不行的,因为它违背了单线程模型)
刚刚开始接触android线程编程的时候,习惯好像java一样,试图用下面的代码解决问题   


new...
                   

                   

                           
  • bruce_wang_janet

  •                        
  • bruce_wang_janet

  •                        
  • 2014-12-06 21:15

  •                        
  • 3865

  •                    

               

           

            
           

               

                   

Android中关于Handle的用法和分析


                   

                        Handler
1.作用:
(1). 结合Thread实现连网读取数据,读取数据后更新页面,即从子线程给主线程提供一个消息报告的作用
因此主线程中一旦接收到此消息报告,即可更新页面。
(2)....
                   

                   

                           
  • u013010578

  •                        
  • u013010578

  •                        
  • 2016-02-28 15:40

  •                        
  • 586

  •                    

               

           

            
           

               

               

                   

                       

如何成为一名机器学习的大咖?

 
对于机器学习,很多人的观点是:机器学习技术是今后所有技术人员都绕不过的一个门槛。 那么,普通程序员该学习机器学作为一名对机器学习心有向往的程序员,我该以什么样的姿势开始呢?
 
                   

               

           

            
           

               

                   

关于Android Handle的用法


                   

                        一、Handler的定义:
      主要接受子线程发送的数据,
 并用此数据配合主线程更新UI.
      解释: 当应用程序启动时,Android首先会开启一个主线程
 (也就是UI线...
                   

                   

                           
  • xiang_pao

  •                        
  • xiang_pao

  •                        
  • 2014-03-10 20:38

  •                        
  • 252

  •                    

               

           

            
           

               

                   

分析Android中Handle机制


                   

                        上次浅分析了android中的绘画机制,今天我们来谈谈,android中的Handle机制。在一开始学习Android的时候,总会遇见一个问题,更新UI只能在主线程中进行,而有时候做耗时操作(耗时操作...
                   

                   

                           
  • s2311307

  •                        
  • s2311307

  •                        
  • 2017-08-06 14:59

  •                        
  • 35

  •                    

               

           

            
           

               

                   

android中Handle类的用法


                   

                        当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无响应,如果时间过长,程序还会挂掉。Ha...
                   

                   

                           
  • sinat_32869075

  •                        
  • sinat_32869075

  •                        
  • 2016-03-08 12:32

  •                        
  • 207

  •                    

               

           

            
           

               

                   

关于c++static关键字和extern关键字


                   

                        1.static用于变量
当我们将变量声明为static类型,如:static int n=0,这就告诉编译器记住第一次的声明,以后再重复使用时不再声明,相当于在文件内定义一个全局变量下面给出一个例...
                   

                   

                           
  • dai_jing

  •                        
  • dai_jing

  •                        
  • 2013-05-06 21:42

  •                        
  • 578

  •                    

               

           

            
           

               

                   

Android中handle用法总结


                   

                        一、Handle 的定义






      Handler主要接收子线程发送的数据, 并用此数据配合主线程更新UI,用来跟UI主线程交互用。比如可以用handler发送一个message,然后...
                   

                   

                           
  • ydx115600497

  •                        
  • ydx115600497

  •                        
  • 2016-03-27 22:22

  •                        
  • 552

  •                    

               

           

            
           

               

                   

关于NSRunLoop和NSTimer的深入理解


                   

                        关于NSRunLoop和NSTimer的深入理解
                   

                   

                           
  • qq_33777090

  •                        
  • qq_33777090

  •                        
  • 2016-05-10 18:06

  •                        
  • 120

  •                    

               

           

            
           

               

                   

Android开发 -- 关于RecylerView的使用和RecylerViewAdapter的实现及监听


                   

                        在学习Android基础的时候,碰到过listView,那么在进阶的时候,发现RecyclerView控件。
在现在的主流APP有许多在使用着RecyclerView,所以今天我们来看看Recyle...
                   

                   

                           
  • u013868143

  •                        
  • u013868143

  •                        
  • 2017-01-09 13:53

  •                        
  • 82

  •                    

               

           

            
           

               

                   

关于MFC中的#ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #endif


                   

                        情况1:
#ifdef _DEBUG
virtual void AssertValid() const; //assert(断言)valid(有效的,正确的)
virtual void Dump...
                   

                   

                           
  • ZYTTAE

  •                        
  • ZYTTAE

  •                        
  • 2015-04-07 21:49

  •                        
  • 682

  •                    

               

           

            


            


            
        
           

               

                   

android 中的handle


                   

                        http://www.cnblogs.com/GodBlessMe/archive/2011/04/16/2017840.html




android学习笔记之消息机制


        有...
                   

                   

                           
  • renyuanrenyuan

  •                        
  • renyuanrenyuan

  •                        
  • 2012-06-17 19:48

  •                        
  • 66

  •                    

               

           

            
           

               

                   

Android中Handle的作用


                   

                        今天遇到一篇写的浅显易懂的文章,特别贴出来。


在Android的UI开发中,我们经常会使用Handler来控制主UI程序的界面变化。有关Handler的作用,我们总结为:与其他线程协同工作,接收...
                   

                   

                           
  • u010550007

  •                        
  • u010550007

  •                        
  • 2015-06-04 16:58

  •                        
  • 375

  •                    

               

           

            
           

               

                   

Objective-C 关于 self 的用法总结


                   

                        原文来自:OSChina


今天新同事问了一些关于什么时候用全局变量,什么时候用self.赋值的问题,所以笔者在此说明一下。


何时使用self.在网上搜索或者论坛里的回复大多都是简简单单的说...
                   

                   

                           
  • Li_Huifeng

  •                        
  • Li_Huifeng

  •                        
  • 2012-12-11 09:08

  •                        
  • 1049

  •                    

               

           

            
           

               

                   

关于RAM的一点小见解


                   

                        众所周知,存储器主要分为只读存储器(ROM)、闪存(flash)、随机存储器(RAM)、光磁介质存储器。
而对于随机存储器(Random-Access Memory),即我们平时所说的RAM,他和只...
                   

                   

                           
  • chris_leeYC

  •                        
  • chris_leeYC

  •                        
  • 2014-12-07 14:17

  •                        
  • 310

  •                    

               

           

            
           

               

                   

关于__vectorcall的使用


                   

                        关于__vectorcall的使用
                   

                   

                           
  • lif12345

  •                        
  • lif12345

  •                        
  • 2017-01-06 21:27

  •                        
  • 304

  •                    

               

           

            
           

               

                   

关于C++中的句柄(handle)


                   

                        (来自:http://blog.163.com/shaochx@126/blog/static/202195182009111101932975/)


1.句柄是什么?
    在windows...
                   

                   

                           
  • lihuacui

  •                        
  • lihuacui

  •                        
  • 2016-09-26 20:01

  •                        
  • 69

  •                    

               

           

            
           

               

                   

handle的用法


                   

                        Handler是Android消息模型最重要的一个概念,它可以说是Android消息模型的核心,对于Looper、MessageQueue、Message 等概念一般在应用中很少使用。在Android...
                   

                   

                           
  • tianxiangshan

  •                        
  • tianxiangshan

  •                        
  • 2012-07-31 13:16

  •                        
  • 1808

  •                    

               

           

            
           

               

                   

关于WM_NOTIFY的使用方法


                   

                        关于WM_NOTIFY的使用方法 
            
    切记:此消息只发给它的父窗口,再要发给父窗口的父窗口或主框架窗口等...
                   

                   

                           
  • jolin678

  •                        
  • jolin678

  •                        
  • 2015-11-24 12:28

  •                        
  • 180

  •                    

               

           

            
           

               

                   

文章标题


                   

                        关于用研方法的心得  现实工作中用户的需求会千奇百怪,再加上数据采集,业务部门的反馈,尝尝会让很多产品经理迷失在自己的世界里,而产品不可能大而全的满足所有用户的所有需求,这点虽然是老生常谈,但仍屡见不...
                   

                   

                           
  • qq_28739633

  •                        
  • qq_28739633

  •                        
  • 2015-06-04 14:09

  •                        
  • 115

  •                    

               

           

            
           

               

                   

关于JSP里JavaBean的用法分析


                   

                        关于JSP里JavaBean的用法分析:我们可以使用Scriptlet的方式:  / 
还可以用的方式//bean.HelloBean.java:
package bean;


public cl...
                   

                   

                           
  • irelandken

  •                        
  • irelandken

  •                        
  • 2011-11-02 09:49

  •                        
  • 2176

  •                    

               

           

           

   

   

Android中关于Handle的用法和分析

原创 2016年02月28日 15:40:50

Handler

1.作用:

(1). 结合Thread实现连网读取数据,读取数据后更新页面,即从子线程给主线程提供一个消息报告的作用

因此主线程中一旦接收到此消息报告,即可更新页面。

(2). 指定一系列的动作排队执行

2.实现步骤:

1. 创建Handler对象

注:在new对象的结尾添加{},并重写handleMessage方法

2. 通过handler发送消息

      2.1在发送消息时可选择发送空消息或者非空消息

            非空消息与空消息的区别:

                   空消息中只能携带一个int类型的数字

                  非空消息中除了可以携带int类型的数字外,还可携带一些其他数据

            发送消息时可选择的方法:

                     a) sendEmptyMessageint what)发送空消息

                        参数作用:给当前发送的消息匹配一个唯一标识 由于所有通过handler对象发送的消息,最后都会到同一个        handleMessage方法中进行接收

                        因此,为了handleMessage方法中区分当前接收的消息是哪一个条通过msg对象的what属性进行判断

                     b) sendMessage (Message msg)   发送非空消息

       2.2发送步骤:

                     1)封装要发送的Message对象

                      初始化方式有以下3种:

                        Message msg = new Message();

                        Message msg = Message.obtain();

                        Message msg = handler.obtainMessage();

                        推荐选择后两种方式的任意一种进行初始化,不推荐使用new Message方法获取对象

原因:后两种方式在创建对象时会去判断内存中是否有能够直接使用的Message对象,如果有,直接拿来用,

如果没有,再新建对象使用。通过后两种方式可以减少创建对象的个数,在内存方面比较优化

                      2) 通过调用msg.what = n(任意数字)给当前封装的msg对象的what属性赋值

                      3) Message对象中添加要携带的数据

可选的添加数据的方式:

(1) msg.obj = Object(任意类型的对象)   msg对象的obj属性赋值

(2) 通过msg对象的arg1arg2属性携带数据,添加数据的方式与obj属性相同msg.属性名 =  赋值;

           此两条属性只能携带int类型的数据

(3) 通过msg对象的setData(Bundle args)方法携带数据

对应的取出数据的方式:

handleMessage方法中,通过参数msg对象

(1) Object o = msg.obj;  取出msg对象的obj属性的值

注:接收该属性的对象可以按需求写成任意类型

如,接收的是一个Bitmap图片数据

则可:Bitmap o= Bitmapmsg.obj;

(2) 通过msg.arg1进行取值即可

(3) 通过msg.getData 先取出传递过来的Bundle对象,然后通过Bundle对象调用get方法根据key取出对应的value

应该在什么情况下选择哪种方式携带数据?

1. 如果要携带的数据的类型和个数不超出2int1个任意类型时,推荐直接使用对应的属性进行携带

2. 如果要携带的数据的类型或者个数超出上述的限制,那么使用setData方法进行携带

3. 在handleMessage中接收通过sendEmptyMessage或者通过sendMessage方法发送过来的消息

4. 通过handleMessage方法中的参数msg对象获取msg.what属性的值即可区分当前接收的是哪一个发送过来的消息

使用Handler时的注意事项:

1. handleMessage名称不要写错,参数列数不要修改

2. 在初始化Handler对象,重写handleMessage方法的时候,注意不要写成以下格式:

3. 在一个Activity中支持创建多个Handler对象,当发送消息后,由哪个handleMessage方法进行消息的处理,取决于发送消息的对象是哪个------哪个handler对象发送的消息,就有哪个handler对象进行消息的处理

4. handler对象的发送消息方法并不会阻塞主线程的运行,即如果在发送消息的代码后方有其他代码,那么不会等到消息处理完后再后续代码,而是直接运行后续代码

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

  暂无评论

相关文章推荐

android handle 用法

方法一:(java习惯,在android平台开发时这样是不行的,因为它违背了单线程模型) 刚刚开始接触android线程编程的时候,习惯好像java一样,试图用下面的代码解决问题    new...

Android中关于Handle的用法和分析

Handler 1.作用: (1). 结合Thread实现连网读取数据,读取数据后更新页面,即从子线程给主线程提供一个消息报告的作用 因此主线程中一旦接收到此消息报告,即可更新页面。 (2)....

如何成为一名机器学习的大咖?

对于机器学习,很多人的观点是:机器学习技术是今后所有技术人员都绕不过的一个门槛。 那么,普通程序员该学习机器学作为一名对机器学习心有向往的程序员,我该以什么样的姿势开始呢?

关于Android Handle的用法

一、Handler的定义:       主要接受子线程发送的数据, 并用此数据配合主线程更新UI.       解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线...

分析Android中Handle机制

上次浅分析了android中的绘画机制,今天我们来谈谈,android中的Handle机制。在一开始学习Android的时候,总会遇见一个问题,更新UI只能在主线程中进行,而有时候做耗时操作(耗时操作...

android中Handle类的用法

当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无响应,如果时间过长,程序还会挂掉。Ha...

关于c++static关键字和extern关键字

1.static用于变量 当我们将变量声明为static类型,如:static int n=0,这就告诉编译器记住第一次的声明,以后再重复使用时不再声明,相当于在文件内定义一个全局变量下面给出一个例...

Android中handle用法总结

一、Handle 的定义       Handler主要接收子线程发送的数据, 并用此数据配合主线程更新UI,用来跟UI主线程交互用。比如可以用handler发送一个message,然后...

关于NSRunLoop和NSTimer的深入理解

关于NSRunLoop和NSTimer的深入理解

Android开发 -- 关于RecylerView的使用和RecylerViewAdapter的实现及监听

在学习Android基础的时候,碰到过listView,那么在进阶的时候,发现RecyclerView控件。 在现在的主流APP有许多在使用着RecyclerView,所以今天我们来看看Recyle...

关于MFC中的#ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #endif

情况1: #ifdef _DEBUG virtual void AssertValid() const; //assert(断言)valid(有效的,正确的) virtual void Dump...

android 中的handle

http://www.cnblogs.com/GodBlessMe/archive/2011/04/16/2017840.html android学习笔记之消息机制         有...

Android中Handle的作用

今天遇到一篇写的浅显易懂的文章,特别贴出来。 在Android的UI开发中,我们经常会使用Handler来控制主UI程序的界面变化。有关Handler的作用,我们总结为:与其他线程协同工作,接收...

Objective-C 关于 self 的用法总结

原文来自:OSChina 今天新同事问了一些关于什么时候用全局变量,什么时候用self.赋值的问题,所以笔者在此说明一下。 何时使用self.在网上搜索或者论坛里的回复大多都是简简单单的说...

关于RAM的一点小见解

众所周知,存储器主要分为只读存储器(ROM)、闪存(flash)、随机存储器(RAM)、光磁介质存储器。 而对于随机存储器(Random-Access Memory),即我们平时所说的RAM,他和只...

关于__vectorcall的使用

关于__vectorcall的使用

关于C++中的句柄(handle)

(来自:http://blog.163.com/shaochx@126/blog/static/202195182009111101932975/) 1.句柄是什么?     在windows...

handle的用法

Handler是Android消息模型最重要的一个概念,它可以说是Android消息模型的核心,对于Looper、MessageQueue、Message 等概念一般在应用中很少使用。在Android...

关于WM_NOTIFY的使用方法

关于WM_NOTIFY的使用方法                   切记:此消息只发给它的父窗口,再要发给父窗口的父窗口或主框架窗口等...

文章标题

关于用研方法的心得  现实工作中用户的需求会千奇百怪,再加上数据采集,业务部门的反馈,尝尝会让很多产品经理迷失在自己的世界里,而产品不可能大而全的满足所有用户的所有需求,这点虽然是老生常谈,但仍屡见不...

关于JSP里JavaBean的用法分析

关于JSP里JavaBean的用法分析:我们可以使用Scriptlet的方式: / 还可以用的方式//bean.HelloBean.java: package bean; public cl...

你可能感兴趣的:(Android移动开发)