当前位置: 代码迷 >> Android >> 怎么让子线程下载的数据,传给主线程
  详细解决方案

怎么让子线程下载的数据,传给主线程

热度:86   发布时间:2016-04-28 02:07:57.0
如何让子线程下载的数据,传给主线程?


问题是:想通过子线程获得网络下载数据,然后传给主线程,通过intent发给第二个activity。
但是实现不了,尤其是子线程的返回数据,给不了主线程。

请问如何解决,本人刚接触Android。
谢谢了。
------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

是啊,只能是监听器跳转,所以 我现在不知道怎么讲handler的数据传递给intent。
请问有什么好的方法吗?


刚才解决问题去了……

再推荐个笨方法……在按钮方法里判断那个变量if(mIntentData!=null){就执行跳转,跳转后mIntentData=null(或者类似)}
而这个mIntentData由handler那边负责更新数据(赋值),就是传的数据


你的意思是两个activity都有各自的handler?第二个activity的handler接收第一个activity的handler?

谢谢回复。


我是看你这句话理解的:
页面上有一个按钮,点一下,子线程从网络下数据,然后传给intent,然后启动第二个activity。

这里是下载数据完成后再点击按钮……

onClick(View v){
    if(mIntentData!=null){
        Intent intent=new Intent(MainActivity.this,XXXX.class);
        intent.putExtar("data",mIntentData);//数据?如果要传对象,需要对象实现序列化
        startActivity(intent);
    }
}


Handler handler=new Handler(){
    @Override
    public boolean handleMessage(Message msg){
        switch (msg.what){
            case 1:
                //把数据存给mIntentData,类型自己定,对象要序列化
                break;
        }
}

------解决思路----------------------
引用:
现在能取到值,但是需要点击按钮两次,不知道为什么?难道是主线程等待子线程返回数据?


代码貌似没发全,没看到线程在哪start的
你可以在收到消息后Toast.make一下,看是不是执行次数和点击次数是否一样。
handleMessage的确是等待子线程发消息
  相关解决方案