数据输出方法,需要传入参数handler
public void static dataOut(Handler handler){
//输出数据的线程
final Thread thread = new Thread(new Runnable() {
@Override
public void run() {
//获取Message对象
Message message = Message.obtain();
List list=new ArrayList();
list.add("wen");
list.add("yu");
list.add("da");
//放入数据,传输集合
message.obj=list;
message.what = 1;
handler.sendMessage(message);
}
});
//线程启动
thread.start();
}
在主线程中接收
public class MainActivity extends AppCompatActivity {
//handler作为属性
private Handler handler=new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
//得到集合
List<String> list=(List<String>) msg.obj;
//这个集合最好不要作为类属性让其他方法使用,因为使用这个集合时输出数据的线程不一定结束
Log.e("sout",list.get(0));//输出一下
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//调用dataOut方法,启动线程,将上面的handler与线程绑定
Thread1.dataOut(handler);
Log.e("sout","主线程");//可以发现这个输出是先于handler中的输出的
}
}