【问题标题】:Android: Certain intent extras prevent activity finishAndroid:某些意图附加功能会阻止活动完成
【发布时间】:2011-06-23 16:32:45
【问题描述】:

我有一个活动允许我用相机拍摄图像,我想将此图像作为 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() 被允许获取一个字节数组,我什至尝试将它包装为一个位图并发送它,但它也不起作用。我唯一能想到的是,我不应该将这么大的东西传递给 Intent,在这种情况下,我想我会尝试将其写入文件。只是写入文件应该比只传递字节数组引用要慢,这就是我尝试这样做的原因。

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

手机:三星 Galaxy S API 级别:7

【问题讨论】:

    标签: android android-intent


    【解决方案1】:

    您不应该在 Intent extras 中包含您的图像数据。有关说明,请参阅this thread。简而言之,尽量减少 Intent 附加项。

    我建议将您的图片存储到 SD 卡中,并在您的 Intent 中传递此文件的路径。

    【讨论】:

    • 非常感谢,我希望我在两个小时前就找到了该线程(Android 开发新手)。将图像写入文件然后再直接读取它对我来说似乎有点愚蠢 - 也许我应该只使用一个单例来保存它,因为我只希望拍摄的图像在应用程序生命周期中持续存在?无论如何,感谢您的及时回复:)
    【解决方案2】:

    试试这个代码

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

    并使用 quit() 调用它;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-31
      • 1970-01-01
      • 2017-07-21
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多