抛开你这段代码不看,单根据你的标题来回答:
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;
}
}
};
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线程去做一些事情。