/主进程中一函数,检查是否版本更新, newVersion变量为全局变量/
 private void goToCheckNewVersion() {
 Handler ckhander=new Handler() {
 public void handleMessage(android.os.Message msg) {
 super.handleMessage(msg); 
 if (msg.what == 1) {
 newVersion=msg.getData().getString("vers");/*这里没问题,可以获取到子线程传来的新版本号*/
 System.out.println("NewVersion为:"+newVersion);
 } 
 if (msg.what == 0) { 
 ToastUtil toastUtil = new ToastUtil(UpDate.this);
 toastUtil.showDefultToast("抱歉,由于网络问题暂时无法检查是否需要更新!!").show(); 
 newVersion="Error";
 }
 }
 }; 
  try { 
 Thread ckthread= new Thread(new CheckNewVTHread(ckhander));//子线程
 ckthread.start();//线程启动
 ckthread.join();//我想让handleMessage执行完成,成功给NewVersion赋值后再运行主线程,但是没起作用。
 } catch (Exception e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 UpDate.newVersion="Error";
 }System.out.println("执行完NewVersion为:"+newVersion);
 /问题来了,这里的newVersion死活都没有被子线程改变,按理说应该在handleMessage函数中 msg.what==1时候就改变了。最后发现是 goToCheckNewVersion函数,既主线程执行太快,在子线程还没返回时候就执行完了,所以newVersion还没变,那么怎么避免这个问题呢?我用了ckthread.join();让子线程先执行完,但是还是没有效果,哪位大神告知下怎么解决呢?/
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。