Android:某些意图附加功能会阻止活动完成

时间:2011-06-23 08:22:31

标签: android android-intent

我有一个活动,允许我用相机拍摄图像,我想将此图像作为Intent extra发送到父活动。但是,如果我实际上尝试将图像添加到意图中,那么finish()调用似乎永远不会做任何事情,我的活动永远不会关闭。

以下是我的一些代码:

    public void onPictureTaken(byte[] imageData, Camera c)
    {
        if (imageData != null) {
            // Send the result as a byte array
            Intent intent = new Intent();
            intent.putExtra("imagedata", imageData);
            setResult(RESULT_OK, intent);
            finish();
        }
    }

奇怪的是,如果我注释掉putExtra()电话,那么一切正常(当然没有图像),我的活动关闭,我点击父母的onActivityResult()回调。但是如果我离开线路,则活动永远不会关闭,回调永远不会触发。

我已经尝试将更多琐碎的东西放在附加内容中,比如字符串,这一切都完美无缺。允许putExtra()采用字节数组,我甚至尝试将其作为Bitmap包装并发送,但它也不起作用。我唯一能想到的是,我不应该把那么大的东西传递给Intent,在这种情况下我想我只是尝试将它写入文件。只是写入文件应该比传递字节数组引用要慢,这就是我试图这样做的原因。

有什么想法吗?在此先感谢:)

电话:三星Galaxy S. API级别:7

2 个答案:

答案 0 :(得分:2)

您不应将图像数据包含在Intent附加内容中。有关说明,请参阅this thread。简而言之,尽量减少你的Intent附加功能。

我建议将你的照片存储到SD卡中,并将路径传递给你的意图中的这个文件。

答案 1 :(得分:0)

试试这段代码

public void quit() {
        int pid = android.os.Process.myPid();
        android.os.Process.killProcess(pid);
        System.exit(0);
    }

并使用quit();

调用它