我有一个使用startActivityForResult
方法启动另一个活动的活动。我想以编程方式终止被调用者,但我不知道如何执行此操作,因为在onActivityResult()
方法中我没有关于被调用活动的信息,我无法在其上调用finish()
。我怎样才能做到这一点?
由于
答案 0 :(得分:7)
已启动的Activity
可以完成自我:
setResult(RESULT_OK);
finish();
答案 1 :(得分:3)
试试finishActivity(requestCode)。根据文档,它允许您完成以前使用startActivityForResult启动的活动。如果有多个此类活动具有相同的请求代码,则所有活动都将完成。
注意:我自己并没有真正尝试过,但这就是文档所说的!试验一下,看看它是否符合您的要求。
答案 2 :(得分:2)
当您调用startActivityForResult时,您的Activity将被关闭或暂停,并且新活动将启动。唯一可以完成新活动的是新活动。
您可以启动后台任务,并让此后台任务以某种方式通知您的活动,该活动现在可以完成。
我不知道如果活动A暂停且活动B处于活动状态,活动A中创建并传递给线程的Handler是否仍然有效。但我认为这是有效的,因为两个活动都在同一个线程中运行,因此它们应该共享相同的消息队列。
答案 3 :(得分:1)
这件事让我感到困惑,所以我想我会在这里添加评论:
if(readyToFinish()){
finish()
}
thisCodeWillBeExecuted()
我的经验是,之前在堆栈跟踪中的所有代码都会被执行 活动结束了。此时的文档并不理想。