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

前端之家收集整理的这篇文章主要介绍了如何强制主要Acivity在Android中等待子活动?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我称之为主要活动的子活动.这个子活动应该从用户那里拿几个数字(我使用编辑文本控件来实现这一点),将它们保存到另一个类中的静态变量并终止.我希望主要活动等待子活动,但两者都只是同时运行.即使这样做也无济于事:
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());

你知道如何强迫主要活动等待吗? Android中不支持Thread.wait()方法(程序抛出错误).

解决方法

我同意Nikolay这绝对是安卓的方法.

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

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

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

尝试习惯android activity lifecycle的工作方式.使用此方法将导致更少的已用内存和更好的用户体验.

猜你在找的Android相关文章