如果调用相机,则不会调用onActivityResult()

时间:2011-05-16 10:08:25

标签: android

我的简单结构:

  • List.java(活动A)
  • New.java(活动B)

步骤:

  1. 启动A并使用startActivityForResult()通过按钮转到B.
  2. 然后在B中,使用Intent it = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);startActivityForResult()通过调用相机拍摄照片。
  3. 之后,调用B中的onActivityResult()。然后我单击按钮设置结果代码并关闭B.
  4. 但是,B已关闭,但A中的onActivityResult()永远不会被调用。

    如果我跳过拍摄照片的步骤,请单击按钮设置结果代码并关闭B.将成功调用A中的onActivityResult()

    我对这两种情况感到困惑。请有人告诉我为什么会出现第一种情况?

    非常感谢。

2 个答案:

答案 0 :(得分:0)

当你的第一个活动被摧毁时发生了它。

答案 1 :(得分:0)

我试图复制你所描述的内容,但没有运气:

http://androidgecko.com/project.zip

看看并告诉我,如果我错过了什么。

知道当另一个应用程序进入前端时(在这种情况下为摄像头),android可能会杀死以前的进程以释放内存(甚至不是谷歌文档描述的活动,但整个PID)可能会导致您的问题。

当您从应用程序启动Gallery或Camera应用程序时,我已经看到过这种行为,特别是在旧手机上。

这就是为什么像Facebook这样的应用程序有自己的Gallery / Camera实现的原因之一(因此PID不会被杀死,因为它是前面的)。

但是..即使PID被杀了,你应该看到的是Activity娱乐,这意味着onCreate savedInstanceState不是null应该触发..然后onActivityResult ..

查看我的示例,让我知道如何重现您的问题。