android中Handler中的obtainMessage()

public final Message obtainMessage (int what, int arg1, int arg2, Object obj)这里面的4个参数求解释啊。。。

byte[] buffer = new byte[1024];            int bytes;bytes = mmInStream.read(buffer);mHandler.obtainMessage(MainActivity.MESSAGE_READ, bytes, -1, buffer) .sendToTarget();

这个是实例的代码

case MESSAGE_READ:

byte[] readBuf = (byte[]) msg.obj;//这是把缓冲区给了readBuf吗?

 String ss = new String(readBuf, 0,msg.arg1);//这一句什么意思,貌似arg1存的就是读入的值

---------------------------------------------------------------------------------------就是你的Message传给Handler的值,
Message msg = handler.obtainMessage();		msg.arg1 = 1;		msg.arg2 = 2;		msg.what = 3;		msg.obj = Object;

在Handler中接收Handler handler = new Handler(){

    			@Override    			public void handleMessage(Message msg) {        				super.handleMessage(msg);        //接收Message发送的消息  msg.what   msg.arg1  msg.arg2  msg.obj        //这里msg.obj需要强转成你传过来的数据类型}

		};
-------------------------------------------------------
mHandler.obtainMessage(MainActivity.MESSAGE_READ, bytes, -1, buffer) .sendToTarget();
-------------------------------------------------------
new String(readBuf, 0,msg.arg1); String (byte[] data, int offset, int byteCount)msg.arg1充当了byteCount,也就是字符长度。msg.arg1不是就是在传消息之前的bytes的赋值吗,而bytes = mmInStream.read(buffer),也就是把单字符给了bytes
				
时间: 2024-10-09 07:21:59

android中Handler中的obtainMessage()的相关文章

[转]Android中handler总结

一.Handler的定义: Handler主要接收子线程发送的数据, 并用此数据配合主线程更新UI,用来跟UI主线程交互用.比如可以用handler发送一个message,然后在handler的线程中来接收.处理该消息,以避免直接在UI主线程中处理事务导致影响UI主线程的其他处理工作,Android提供了Handler作为主线程和子线程的纽带:也可以将handler对象传给其他进程,以便在其他进程中通过handler给你发送事件:还可以通过handler的延时发送message,可以延时处理一些

android中handler用法总结

    一.Handler的定义: Handler主要接收子线程发送的数据, 并用此数据配合主线程更新UI,用来跟UI主线程交互用.比如可以用handler发送一个message,然后在handler的线程中来接收.处理该消息,以避免直接在UI主线程中处理事务导致影响UI主线程的其他处理工作,Android提供了Handler作为主线程和子线程的纽带:也可以将handler对象传给其他进程,以便在其他进程中通过handler给你发送事件:还可以通过handler的延时发送message,可以延时

Android中Handler的使用方法——在子线程中更新界面

本文主要介绍Android的Handler的使用方法.Handler可以发送Messsage和Runnable对象到与其相关联的线程的消息队列.每个Handler对象与创建它的线程相关联,并且每个Handler对象只能与一个线程相关联. Handler一般有两种用途:1)执行计划任务,你可以再预定的实现执行某些任务,可以模拟定时器.2)线程间通信.在Android的应用启动时,会创建一个主线程,主线程会创建一个消息队列来处理各种消息.当你创建子线程时,你可以再你的子线程中拿到父线程中创建的Han

Android中Handler的使用方法及实例(基础回顾)

Handler使用例1 这个例子是最简单的介绍handler使用的,是将handler绑定到它所建立的线程中.本次实验完成的功能是:单击Start按钮,程序会开始启动线程,并且线程程序完成后延时1s会继续启动该线程,每次线程的run函数中完成对界面输出nUpdateThread...文字,不停的运行下去,当单击End按钮时,该线程就会停止,如果继续单击Start,则文字又开始输出了. 软件界面如下: 实验主要部分代码和注释: MainActivity.java: 1 package com.ex

Android中Handler 、Thread和Runnable之间的关系

在多线程编程的时候,我们经常会用到Handler,Thread和Runnable这三个类,我们来看看这三个类之间是怎么样的关系? 首先说明Android的CPU分配的最小单元是线程,Handler一般是在某个线程里创建的,因而Handler和Thread就是相互绑定的,一一对应. 而Runnable是一个接口,Thread是Runnable的子类.可以说,他俩都算一个进程. HandlerThread顾名思义就是可以处理消息循环的线程,他是一个拥有Looper的线程,可以处理消息循环. 与其说H

Android之Handler用法总结/安卓中只有主线程可以修改UI

Handler传递消息的方式可以实现实时刷新以及长按连续响应事件. 按钮响应 1 btnadd_fcl.setOnTouchListener(new View.OnTouchListener() { 2 private boolean longclick=false; 3 @Override 4 public boolean onTouch(final View v, MotionEvent event) { 5 // TODO Auto-generated method stub 6 if(e

Android之Handler在新线程中读取网络的两种方法

方法一: 创建一个Thread,然后调用start方法. 实例: package com.example.android_handle; import java.io.BufferedInputStream; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import org.apache.http.util.ByteArrayBuffer; import android.app.A

Android 中handler的理解

andriod提供了Handler 和 Looper 来满足线程间的通信.Handler先进先出原则.Looper类用来管理特定线程内对象之间的消息交换(MessageExchange). 1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的MessageQueue(消息队列). 2)Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到MessageQueue里;或者接收Looper从Message Queue取出)所送来的消息. 3

Android中Handler引起的内存泄露

在Android常用编程中,Handler在进行异步操作并处理返回结果时经常被使用.通常我们的代码会这样实现. 但是,其实上面的代码可能导致内存泄露,当你使用Android lint工具的话,会得到这样的警告 In Android, Handler classes should be static or leaks might occur, Messages enqueued on the application thread’s MessageQueue also retain their t