【问题标题】:Camera Intent is called again after finish it in Android?在Android中完成后再次调用Camera Intent?
【发布时间】:2015-04-17 07:12:55
【问题描述】:

我在 android 4.2 或更高版本上测试过,它没有错误。但是当我在 android 4.1 上测试时,相机 Intent 在我保存图像后再次被调用。我在应用程序中的流程包括: MainActivity - 片段 - ActivityInfo - 相机 当我点击片段上的相机按钮时,它会启动意图(ActivityInfo)并添加额外内容(意图的名称和我选择相机或画廊时的名称)。之后,ActivityInfo 启动,在 onCreate 函数中我得到额外的值并检查它是否是相机的名称,我将启动相机意图。当我完成拍摄照片并保存照片时,它会完成()相机意图并再次调用相机意图。当我将设备与 cabe 断开连接时会出现此错误,而当设备与 cabe 连接时它会消失。

我无法调试,因为当我的设备插入时没有出现问题。我拔出时它只是有错误。我在 ImageActivity 的 onCreate 中添加了一行代码日志消息,当错误出现时,我插入设备并捕获并保存图像,相机完成和 onCreate 中的日志消息出现在屏幕调试中,并且相机再次出现。

【问题讨论】:

  • 你能贴一些代码吗?
  • 请发布您的代码,以便我们准确修复您的错误。

标签: android android-intent android-fragments camera


【解决方案1】:

我敢打赌,这个问题与特定的 android 版本无关,但出于其他原因:当图像捕获后返回到前台时,您的 Activity 可能会被破坏并重新创建。并且因为您是从 onCreate() 调用 startActivity() - 它只是再次运行。

这是一个常见错误:未处理和考虑saveInstanceState 参数,该参数指示当前是否在系统将其杀死后重新创建活动/片段,因为它处于内存压力之下。

p>

更多信息 - http://developer.android.com/training/basics/activity-lifecycle/recreating.html#RestoreState

检查代码savedInstanceState

if (savedInstanceState == null) {
            Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(cameraIntent, CAMERA_REQUEST);
        }

【讨论】:

  • 感谢分享。所以如果你说内存是一个原因,那么为什么我连接设备,这个错误不会出现。
  • 不知道为什么你在插上设备的时候没有这个问题,但是我相信你不需要浪费时间去想那个……问题是不是记忆。问题是您没有处理临时内存压力的常见情况。您可以通过在 oncreate() 中打印显示保存的实例状态参数是否为空的 toast 消息来验证是否确实如此。这样你就可以看到它,无需连接
  • 关注developer.android.com/training/basics/activity-lifecycle/… 我已经完成了。在 onSaveInstanceState 函数中保存活动状态或每个数据,并在 onCreate 函数中检查。
  • 我建议你也仔细阅读这份文件:developer.android.com/guide/components/activities.html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多