您的位置:首页 > 其它

handler 进行主线程与子线程之间的信息传递

2015-04-01 18:06 323 查看
子线程与主线程之间进行消息的传递:这里应用了handlerThread这个方式进行新的子线程的启动,因为在启动子线程的时候,想要新建一个Loop对象则要调用其相应的方法,这个方法是Google提供的,为我们自动开启了一个Looper,并且避免了在子线程中的NULL exception :

public class MainActivity extends Activity {

private TextView textView;

Handler mainHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
Message message = new Message();
Log.e("test"," main  Thread");
<span style="color:#ff0000;">sonHandler.sendMessageDelayed(message, 1000);//这里是子线程的handler对象进行调用,并且实现线程的传递</span>
}
};

Handler sonHandler;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.hello);
textView.setOnClickListener(new View.OnClickListener() {//为text添加点击事件,目的是启动主线程的message的调用
@Override
public void onClick(View v) {
mainHandler.handleMessage(new Message());
}
});
HandlerThread sonThread = new HandlerThread("sonThread");
sonThread.start();
sonHandler = new Handler(sonThread.getLooper()){
@Override
public void handleMessage(Message msg) {
Log.e("test"," son  Thread");
Message message = new Message();
<span style="color:#ff0000;">mainHandler.sendMessageDelayed(message,1000);//主要是这里,主线程的handler对象调用send方法进行方法的传递</span>
}
};


结果:



这样互相交替的出现,就是子线程收到数据后给主线程一个返回,主线程收到后,给子线程一个反馈,这样就实现了互相的数据传递
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: