如何强制主要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性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...