android 在子线程中如何把自定义对象传到handler中处理

一般来说,Thread中要把数据传出去就用message、 bundle、handler来配合使用,代码如下

Message msg=new Message();
Bundle b=new Bundle();
b.putString("context", object.toString());
msg.setData(b);
Log.e("OUT", object.toString());
handler.sendMessage(msg);

但是,bundle能存的数据有限,如图所示

如果我想传递自定义的类怎么办

其实很简单只要把

        msg.what=0x001;
        msg.obj=MyObject;//把一个自定义的类传出去
        handler.sendMessage(msg);
//        接收的时候进行类型转换即可
        MyObject mo=(MyObject) msg.obj();

就是这样啦,是不是很简单呢!!!!

时间: 2024-10-11 04:59:57

android 在子线程中如何把自定义对象传到handler中处理的相关文章

关于子线程使用Toast报错Can't create handler inside thread that has not called Looper.prepare()的解决办法

形同如下代码,在Thread中调用Toast显示错误信息: new Thread(new Runnable(){ @Override public void run() { try{ weatherData = getWeatherData(strUrl); parseJson(weatherData); }catch(Exception e){ Toast.makeText(WindowApplication.getAppContext(), e.toString(), Toast.LENGT

datasnap远程方法支持自定义对象传参

有同仁需要远程方法传输自定义的数据类型,他以为要自己写代码会很复杂,其实DATASNAP早就为我们想到了. datasnap的数据序列和还原真是无与伦比的强大,其远程方法支持自定义对象传参,DATASNAP会自动使用JSON序列和还原自定义的对象. 1)自定义一个对象 type TMyInfo = class(TObject) public AccountNo: string; SQL: string; Params: string; RecsMax: Integer; end; 2)服务端远程

android 在子线程中操作UI 导致Fragment显示空白问题

需求是这样的 当没网络的请求下就显示缓存中的数据,这样做是为了在没网的情况下 不至于界面什么都没有,给用户的体验效果不好,所以就加了个缓存机制,但是这个缓存的代码是我从上家公司拷贝过来的,没怎么仔细看,当在没网的情况下,出现切换tab页,fragment显示空白问题,连标题栏都显示不出来,   后来我就把缓存的那个 注释了  问题就好了,于是问题定位就是缓存这块了,找到问题就相当于问题解决了一半,然后发现那个回调是在子线程中的,而我在这个回调中操作了UI, 所以才会导致界面空白  在此记录下 版

Android 在子线程中更新UI的几种方法

第一种: new Handler(context.getMainLooper()).post(new Runnable() { @Override public void run() { // 在这里运行你要想的操作 比方直接在这里更新ui或者调用回调在 在回调中更新ui } }); context是你传过来的context对象 另外一种: // 假设当前线程是UI线程,那么行动是马上运行.假设当前线程不是UI线程,操作是公布到事件队列的UI线程 // 由于runOnUiThread是Activ

android 通过子线程跳转activity并传递内容

android 子线程中不可以更新ui已经根深蒂固在我的脑海里,当时也就理所当然的认为子线程中也是不可以进行界面的跳转的,但是在后来的学习中,发现竟然是可以通过子线程来进行activity的跳转时,立马把我给震惊了.赶紧滚去写代码测试了下.结果真的可以.顿时泪奔.特此记录一下.与君共勉 activity: package com.example.testchildthreadgootheractivity; import android.app.Activity; import android.

集合框架(去除ArrayList集合中的重复自定义对象元素案例)

学生类 package cn.itcast_04; public class Student { private String name; private int age; public Student() { super(); } public Student(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public v

handler.post 为什么要将thread对象post到handler中执行呢?

转载网址:http://www.cnblogs.com/crazypebble/archive/2011/03/23/1991829.html在Android中使用Handler和Thread线程执行后台操作 对于线程的控制,我们将介绍一个 Handler类,使用该类可以对运行在不同线程中的多个任务进行排队,并使用Message和Runnable对象安排这些任务.在javadoc中,对Handler是这样解释的:Handler可以发送和处理消息对象或Runnable对象,这些消息对象和Runna

windows中的txt文件上传到linux中,打开出现中文乱码

问题:在windows中显示正常的文件,上传到linux中,打开出现中文乱码. 解决方案:使用iconv命令 例如:iconv -f gbk -t utf8 shujujiegou.txt > shujujiegou.txt.utf8 原文地址:https://www.cnblogs.com/huangtao1927/p/8660815.html

在JavaScript 自定义对象来模拟Java中的Map

直接看代码: 1 //模拟一个Map对象 2 function Map(){ 3 4 //声明一个容器 5 var container={}; 6 7 //定义一个put方法,向容器中存值 8 this.put=function(key,value){ 9 container[key]=value; 10 } 11 12 //通过key获取value 13 this.get=function(key){ 14 if(container[key] || container[key]===0 ||