同步startActivityForResult-等待活动完成

|| 我有一个要在其中启动新活动的应用程序,并且在继续之前需要获得活动的结果。 我意识到startActivityForResult是异步的/非阻塞的,并且可以在onActivityResult回调中获取活动的结果。 所以我想我正在寻找的是等待活动返回的最佳方法... 大概是这样吗?或者,还有更好的方法? 活动启动器功能:
public String ActivityLauncher()
{
   //Set up Intent
   startActivityForResult(intent, 1);
   while (mIsActivityDone == false)
   {
       Thread.Sleep(250);
   }
   //Continue with processing
   String data = \"<Data from Activity\">
   return data;
}
打回来:
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
   //Pull out the data
   mIsActivityDone = true;
}
数据需要返回到更高级别的调用函数-这就是为什么我需要等待ActivityLauncher函数中的结果的原因。 谢谢!     
已邀请:
        这将阻塞您的UI线程,因此其他活动也不会执行。 在这种情况下,我将使用更高级别的函数提供的某种回调类,并在ѭ2中调用其回调函数。     
        如果您可以从新线程开始这些活动,那么Android为您提供了一个解决方案。您可以使用Instrumentation。为什么需要新线程?因为startActivitySync将检查您是否在主线程中对其进行了调用。如果是它的主线程,那么它将抛出异常。 工具可以让您监视活动。您可以以阻止或非阻止方式监视此活动。
IntentFilter intF = new IntentFilter(\"ACTIVITY.THAT.YOU.WANT.TO.LAUNCH\");

Instrumentation instrumentation = new Instrumentation();

Instrumentation.ActivityMonitor monitor = instrumentation.addMonitor(intF, null, true);
Intent i = new Intent(\"ACTIVITY.THAT.YOU.WANT.TO.LAUNCH\");
instrumentation.startActivitySync(i);
    

要回复问题请先登录注册