如何解决同步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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。