android异步任务完成后再执行主线程任务



android假如主线程依赖子线程A的执行结果,如何让A执行完成,之后主线程再往下执行呢?

需要在子线程执行完成的地方,通过主线程的Handler发送一条消息;主线程收到消息后执行:

public class MainActivity extends Activity {
    private Handler uiHandler = new Handler(){
        // 覆写这个方法,接收并处理消息。
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what){
                case 1:
                    break;

//主线程在这完成子线程回传数据的接收,并完成对之的操作(解析等。。。)
//进而,可选择跳转页面,或者更新ui


            }
        }
    };
    
    class ChildThread extends Thread{
        @Override
        public void run() {
            try{
                // 子线程执行完毕的地方,利用主线程的handler发送消息
                Message msg = new Message();
                msg.what = 1;
                uiHandler.sendMessage(msg);
            }catch (InterruptedException e){
                e.printStackTrace();
            }
        }
    }

PS:主线程是UI线程,不要试图让UI线程等待某个结果,之后再往下执行,这会导致UI卡顿。
UI线程是一直循环的,我们需要通过消息机制通知UI线程去做一些事情。

你可能感兴趣的:(android)