如何强制主要Acivity在Android中等待子活动?

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()方法(程序抛出错误).

Nik*_*nov 7

可能是我错过了什么,但为什么不只是使用startActivityForResultonActivityResult机制?你可以从你产生的意图中获得你的潜意识的结果.
编辑:顺便说一句,据我所知,如果你Object.wait()将从Activity代码运行,如果将保持UI踏板whitch可能导致Application not responding错误.


Jan*_*usz 3

我同意 Nikolay 的观点,这绝对是 Android 的方式。

在子活动中使用startActivityForResult启动子活动,使用setResult添加结果代码和包含数据包中所需的所有数字的意图。

在您的第一个活动中,覆盖onActivityResult并从 Intent 中检索数字。

如果您使用静态变量,一开始这似乎更容易,但它非常不安全,并且在某些情况下这可能不起作用。如果您的程序发送到后台,您的活动将被保存,但如果手机内存不足,系统将关闭您的程序,在用户恢复它后,一切看起来就像用户离开它的那一刻,但静态变量将被重新创建它们的初始化值。

尝试习惯 Android Activity 生命周期的工作方式。使用这种方法将减少使用的内存并提供更好的用户体验。