que*_*ner 6 android blocking wait subactivity android-activity
我称之为主要活动的子活动.这个子活动应该从用户那里拿几个数字(我使用编辑文本控件来实现这一点),将它们保存到另一个类中的静态变量并终止.我希望主要活动等待子活动,但两者都只是同时运行.即使这样做也无济于事:
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());
Run Code Online (Sandbox Code Playgroud)
你知道如何强迫主要活动等待吗?Android中不支持Thread.wait()方法(程序抛出错误).
可能是我错过了什么,但为什么不只是使用startActivityForResult
和onActivityResult
机制?你可以从你产生的意图中获得你的潜意识的结果.
编辑:顺便说一句,据我所知,如果你Object.wait()
将从Activity
代码运行,如果将保持UI踏板whitch可能导致Application not responding
错误.
我同意 Nikolay 的观点,这绝对是 Android 的方式。
在子活动中使用startActivityForResult启动子活动,使用setResult添加结果代码和包含数据包中所需的所有数字的意图。
在您的第一个活动中,覆盖onActivityResult并从 Intent 中检索数字。
如果您使用静态变量,一开始这似乎更容易,但它非常不安全,并且在某些情况下这可能不起作用。如果您的程序发送到后台,您的活动将被保存,但如果手机内存不足,系统将关闭您的程序,在用户恢复它后,一切看起来就像用户离开它的那一刻,但静态变量将被重新创建它们的初始化值。
尝试习惯 Android Activity 生命周期的工作方式。使用这种方法将减少使用的内存并提供更好的用户体验。