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

来源:互联网 发布:在线网络理财产品排名 编辑:程序博客网 时间:2024/04/30 17:14

子线程与主线程之间进行消息的传递:这里应用了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>            }        };

结果:


这样互相交替的出现,就是子线程收到数据后给主线程一个返回,主线程收到后,给子线程一个反馈,这样就实现了互相的数据传递

0 0
原创粉丝点击