android 子线程中定义的Arrylist如何通过Handler传递到主线程中

我在子线程中这样发送在UI线程中这样接受但是在UI线程中使用mWordkslist会报空指针的错误。... 我在子线程中这样发送

在UI线程中这样接受

但是在UI线程中使用mWordkslist会报空指针的错误。
展开
 我来答
科特曜U
推荐于2016-08-15 · TA获得超过2334个赞
知道大有可为答主
回答量:1052
采纳率:50%
帮助的人:756万
展开全部
问题出在bundle.putParcelableArrayList这里,通过这个方法设置到bundle里的对象必须实现了parcelable接口,否则在对象序列化过程中没有实现这个接口的对象就不会序列化,最终put进去的值是null,你传递的实际上是一个ArrayList<List<Works>>对象,Work这个类没有实现Parcelable这个接口,传进去的List<Works>对象实际上是null,最后取出来的也是null,所以会报空指针
解决办法很简单,让Work这个类也实现Parcelable接口,重写writeToParcel方法和describeContents方法并且实例化静态内部对象CREATOR实现接口Parcelable.Creator,写法网上很多,这里不贴了
sinceaddressb
2015-09-23 · 知道合伙人互联网行家
sinceaddressb
知道合伙人互联网行家
采纳数:1280 获赞数:4084
专注网络营销推广,互联网产品研究,具有6年从业经验,愿意为广大知友提供帮助!

向TA提问 私信TA
展开全部
我们开发应用程序的时候,处于线程安全的原因子线程通常是不能直接更新主线程(UI线程)中的UI元素的,那么在Android开发中有几种方法解决这个问题,其中方法之一就是利用Handler处理的。
在Java中创建多线程的方法有两种:
通过继承Thread类,重写Run方法来实现
通过继承接口Runnable实现多线程
Handler是这么定义的:
主要接受子线程发送的数据, 并用此数据配合主线程更新UI.

Handler的主要作用:主要用于异步消息的处理

Handler的运行过程:
当(子线程)发出一个消息之后,首先进入一个(主线程的)消息队列,发送消息的函数即刻返回,而在主线程中的Handler逐个的在消息队列中将消息取出,然后对消息进行处理。这样就实现了跨线程的UI更新(实际上还是在主线程中完成的)。
这种机制通常用来处理相对耗时比较长的操作,如访问网络比较耗时的操作,读取文大文件,比较耗时的操作处理等。
启动应用时Android开启一个主线程 (也就是UI线程) , 如果此时需要一个耗时的操作,例如: 联网读取数据,或者读取本地较大的一个文件的时候,你不能把这些操作放在主线程中,如果你放在主线程中的话,界面会出现假死现象(这也就是你在主线程中直接访问网络时会提示你异常的原因,如我们上篇文章所述Android主线程不能访问网络异常解决办法
)。
这个时候我们需要把这些耗时的操作,放在一个子线程中,因为子线程涉及到UI更新,Android主线程是线程不安全的,更新UI只能在主线程中更新.。
这个时候,Handler就出现了,来解决这个复杂的问题,由于Handler运行在主线程中(UI线程中), 它与子线程可以通过Message对象来传递数据, 这个时候,Handler就承担着接受子线程传过来的(子线程用sedMessage()方法传弟)Message对象,(里面包含数据) , 把这些消息放入主线程队列中,配合主线程进行更新UI。
Handler对象的一些主要方法,如下:
post(Runnable) postAtTime(Runnable,long)
postDelayed(Runnable long)
sendEmptyMessage(int)
sendMessage(Message)
sendMessageAtTime(Message,long)
sendMessageDelayed(Message,long)
正如方法名字中看到的,有两类方法:
(1)在某个主线程中执行Runnable
(2)在子线程中发送一个消息,在主线程中检测该消息处理
线程间传递Message对象的sendMessage方法和发送Runnable多线程对象的post方法。正对应着上面所说的两个特性1)、2)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
玩玩乐乐无爱cW103
2015-07-10 · TA获得超过131个赞
知道小有建树答主
回答量:78
采纳率:0%
帮助的人:81.8万
展开全部
list.get(0)赋值给了一个list?
追问
在子线程中奖一个list添加到了list中。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式