本文原文地址:http://tech./archives/162 在Android中,很多时候都需要用到主线程向子线程传值,其中一原因就是Android只允许在主线程中进行UI修改,而像一些网络方面的传输必须得用其他的线程,所以从主线程向其他线程传值就是必要的了。 这次工作中我需要使用一个按钮把一个序列号传到服务器的接口上,这样就涉及到了网络操作,查到网上的案例很多都是直接这样使用: 主线程中: new Thread(sendValueToServer).start(); 而这个sendValueToServer是一个接口: Runnable sendValueToServer = new Runnable(){ //这里需要实现run方法 @Override public void run(){…} } 开始我也是这样使用,但是死活传不进值去,后来想了一个办法,自己写了一个接口类 class sendValueToServer implements Runnable{ //自己定义一个结构用来传数据 JSONObject svrInfo; //自己定义一个构造函数 public void sendValueToServer(JSONObject svrInfo){ //在这里把数据传进来 this.svrInfo=svrInfo; } //下面还是重写原来的run方法 @Override public void run(){…} } 这样在上面调用的时候就不能直接调用了,需要先定义一个结构 ,再把值传进来就可以了 New Thread(new sendValueToServer(JSONObject xxx)).start(); 这样就实现了从主线程到子线程传值了,其实方法挺简单,但是我就不太明白安卓 为什么自己不在自己的Runnable 接口里实现这种小方法。 |
|