我称之为主要活动的子活动.这个子活动应该从用户那里拿几个数字(我使用编辑文本控件来实现这一点),将它们保存到另一个类中的静态变量并终止.我希望主要活动等待子活动,但两者都只是同时运行.即使这样做也无济于事:
Thread t = new Thread(new Runnable(){ public void run(){ Log.v("==================","run "+new Date()); startActivityForResult(new Intent(ctx,myCustomSubactivity.class),1); } }); Log.v("==================","calling run "+new Date()); t.start(); try { t.join(); } catch (InterruptedException e) {Log.v("==================","can't join");} Log.v("==================","back from activity "+new Date());
解决方法
我同意Nikolay这绝对是安卓的方法.
在子活动使用setResult中使用startActivityForResult启动子活动,以在数据包中添加结果代码和具有所需数字的意图.
在您的第一个活动中覆盖onActivityResult并从Intent中检索数字.
如果你使用静态变量,这在第一时间似乎更容易,但是它非常不安全,并且在某些情况下这可能不起作用.如果您的程序被发送到后台,您的活动将被保存,但如果手机内存不足,系统将关闭您的程序,用户恢复后,一切看起来就像用户离开它的那一刻,但静态变量将被重新创建为他们的初始化值.
尝试习惯android activity lifecycle的工作方式.使用此方法将导致更少的已用内存和更好的用户体验.