关于Android主线程依赖子线程获取的结果进行下一步操作的相关总结

子线程网络访问数据库,得到数据,主线程需要此数据进行后续的操作。由于不太了解Android,本想让主线程等待子线程完成后再继续,后来查阅资料才知道,主线程是不可等待的,因此才将耗时操作放在子线程中操作。

考虑到以上问题,解决方案就是用到Handler了。子线程获取数据成功后,由handler将数据发送到主线程,由于handler是在主线程中运行,所以,可以在其中进行后续的操作。

//开子线程的过程就不写了
if (urlConn.getResponseCode() == 200) {
                    // 获取返回的数据
                    String result = streamToString(urlConn.getInputStream());
                    Message msg = new Message();
                    msg.obj=result ;
                    msg.what=1;
                    handler.sendMessage(msg);

//主线程中handler
private Handler handler =new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what){
                 case 1:
                        String result=msg.obj //获取子线程的数据
                        do Something//继续进行主线程的操作

 

你可能感兴趣的:(关于Android主线程依赖子线程获取的结果进行下一步操作的相关总结)