为什么用handler接收不到list对象

问题描述

为什么用handler接收不到list对象
这是错误提示:

at android.os.Handler.handleCallback(Handler.java:615)

at android.os.Handler.dispatchMessage(Handler.java:92)at android.os.Looper.loop(Looper.java:153)at android.app.ActivityThread.main(ActivityTh

这是代码:

```private Handler listHandler = new Handler() {
public void handleMessage(Message msg) {

        List<Map<String String>> result =  (List<Map<String String>>) msg.obj;        switch (msg.what) {        case AutoListView.REFRESH:            lv_wanzheng.onRefreshComplete();            //listCount.clear();            listCount.addAll(result);            break;        case AutoListView.LOAD:            lv_wanzheng.onLoadComplete();            listCount.addAll(result);            break;        }        lv_wanzheng.setResultSize(result.size());        wanzhengAdapter.notifyDataSetChanged();    };};

new Thread(new Runnable() {

        @Override        public void run() {            Message msg = new Message();            msg.what = whatNum;            msg.obj = getData();            listHandler.sendMessage(msg);        }    }).start();    private List<Map<String String>> getData() {    JsonMessage jm = new JsonMessage();    String[] title = jm.getTitle();    String[] time = jm.getTime();    String[] image1 = jm.getimage1();    String[] image2 = jm.getimage2();    String[] url = jm.getUrl();    List<Map<String String>> listdata = new ArrayList<Map<String String>>();    for (int i = 0; i < image1.length; i++) {        Map<String String> map = new HashMap<String String>();        map.put(""title"" title[i]);        map.put(""time"" time[i]);        map.put(""image1"" image1[i]);        map.put(""image2"" image2[i]);        map.put(""url"" url[i]);        listdata.add(map);    }    return listdata;}

解决方案

不能直接传递对象,要序列化,msg.obj = (Parcelable) object
接收时,MyObject objectRcvd = (MyObject) msg.getData().getParcelable(""MyObject"");

时间: 2024-09-15 03:07:05

为什么用handler接收不到list对象的相关文章

如何利用Handler更新android的UI

  提出问题 新手刚开始接触Android线程编程的时候,会想到如下使用如下代码: 复制到剪贴板  Java代码 new Thread( new Runnable() {         public void run() {              myView.invalidate();         }            }).start();     但是:该实现方法是不可行的. 分析问题: 因为:Android UI操作并不是线程安全的,这些操作必须在UI线程中执行. 1.my

【黑马Android】(05)短信/查询和添加/内容观察者使用/子线程网络图片查看器和Handler消息处理器/html查看器/使用HttpURLConnection采用Post方式请求数据/开源项目

备份短信和添加短信 操作系统短信的uri: content://sms/ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.itheima28.backupsms" android:versionCode="1

探索 Android 大杀器—— Handler

本文讲的是探索 Android 大杀器-- Handler, 如果你想要让一个 Android 应用程序反应灵敏,那么你必须防止它的 UI 线程被阻塞.同样地,将这些阻塞的或者计算密集型的任务转到工作线程去执行也会提高程序的响应灵敏性.然而,这些任务的执行结果通常需要更新UI组件的显示,但该操作只能在UI线程中去执行.有一些方法解决了 UI 线程的阻塞问题,例如阻塞队列,共享内存以及管道技术.Android 为解决这个问题,提供了一种自有的消息传递机制--Handler.Handler 是 An

关于对象之间通信的一点思考

经典的DDD的告诉我们如果一个领域概念是一个跨多个聚合的动作,比如转帐,那么就应该用领域服务来实现这样的业务概念.领域服务的输入和输出参数都是聚合根,领域服务内部按照业务逻辑规定的执行顺序,按照面向过程的方式,逐个调用相关聚合根的相关方法完成整个业务操作.这种方式的优点是:1)清晰的表达和封装了业务逻辑:2)代码清晰,容易理解,代码可读性强:缺点:1)基本的OO思想告诉我们,对象与对象之间应该是通过发送消息和接收消息的方式来通信的.但是通过前面这种方式,对象之间不再像我们想的那样会通过发送消息和

Android多线程----异步消息处理机制之Handler详解

[正文] 虽然是国庆佳节,但也不能停止学习的脚步,我选择在教研室为祖国母亲默默地庆生. 关于Android的多线程知识,请参考本人之前的一篇博客:Android 多线程----AsyncTask异步任务详解 在Android当中,提供了异步消息处理机制的两种方式来解决线程之间的通信问题,一种是今天要讲的Handler的机制,还有一种就是之前讲过的 AsyncTask 机制. 一.handler的引入: 我们都知道,Android UI是线程不安全的,如果在子线程中尝试进行UI操作,程序就有可能会

Android学习笔记(38):Handler消息传递处理机制

先说为什么需要Handler:   Android的主线程又叫UI线程,用于处理与UI相关的时间.Android只允许在主线程中修改UI组件,当我们在其他线程中需要修改UI界面时,就需要发送消息到主线程,再由主线程来处理UI的修改事件.   在UI线程中执行耗时操作或网络操作,否则会抛出ANR ("Application Not Responding")异常或NetworkOnMainThreadExceptionwill异常.   在这些时候,我们用Handler来进行消息的传递和处

Android中关于Handler的若干思考

本文包括与Handler有关的以下问题: (1)Handler的作用 (2)为什么Android中要设计为只能在UI线程中去更新UI呢? (3)Handler的两个异常 (4)Handler.Looper MessageQueue之间的关系(源码角度) (5)跟线程相关的Handler,即HandlerThread(源码角度分析) (6)主线程往子线程发消息   一.Handler的作用: (1)在非UI线程中完成耗时操作,在UI线程中去更新UI. (2)可以在主线程中发送延时消息.   二.为

《深入理解Android:Telephony原理剖析与最佳实践》一3.2 Handler消息处理机制

3.2 Handler消息处理机制 Android在设计的时候引入了Handler消息机制,每一个消息发送到主线程的消息队列中,消息队列遵循先进先出原则,发送消息并不会阻塞线程,而接收线程会阻塞线程.我们接着来看看在Android中对Handler是如何定义的? 3.2.1 Handler概念分析 Handler的官方定义如下: A Handler allows you to send and process Message and Runnable objects associated wit

Android中Handler、Looper、MessageQueue的工作原理

为了更好的理解Handler的工作原理,先介绍一下与Handler一起工作的几个组件. Message: Handler接收和处理的消息对象 Looper:每个线程只能拥有一个Looper.它的loop方法负责读取MessageQueue中的消息,之后把消息交给发送该消息的Handler处理 MessageQueue:消息队列,使用先进先出的方式来管理Message.程序创建Looper对象时会在它的构造器中创建MessageQueue对象.下面是Looper的构造函数: ? 1 2 3 4 5