我有一个应用程序,我要在其中启动一个新的活动,并且需要在继续之前获得活动的结果。
我意识到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函数中的结果。
谢谢!
发布于 2011-06-15 08:03:51
这将阻塞您的UI线程,因此其他活动也不会执行。在这种情况下,我会使用高级函数提供的某种回调类,并在onActivityResult中调用它的回调函数
发布于 2011-11-23 12:16:15
如果你可以从一个新的线程开始这些活动,那么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);https://stackoverflow.com/questions/6351555
复制相似问题