使用多个活动时何时正确释放相机?

Posted

技术标签:

【中文标题】使用多个活动时何时正确释放相机?【英文标题】:When to release camera properly when using multiple activities? 【发布时间】:2013-11-11 12:53:37 【问题描述】:

在我的 android 项目中,我使用相机实例拍照。拍照后,我将开始一项新活动。现在我在 onPause 中释放相机并在 onResume 中重新创建它。这工作正常。现在我的问题是;从其他活动返回相机活动时,将需要“很长时间”。我知道这是因为我重新创建了相机。

我相信这个问题可以通过在用户真正关闭应用程序之前不释放相机来解决。

所以我的问题是: 我什么时候才能以理智的方式释放我的相机,和/或这是如何完成的?

【问题讨论】:

【参考方案1】:

您必须在打开相机的类的onPause 方法上释放您的Camera 实例。因为,举个例子:

让你在Activity中打开Camera,比如说Activity1。现在您导航到其他Activity,比如说Activity2。现在由于任何原因,您的应用程序崩溃了。现在您无法释放您的Camera 实例,也无法创建新实例。

用户导航到Activity2 并按下主页按钮,然后按下Force Stops 来自Settings 的应用程序。在这种情况下,Camera 实例也无法释放。

以上两种情况都没有调用Activity1的方法。

所以你应该在onPause of Activity1 中释放你的Camera 对象

希望我清楚。

【讨论】:

这正如你所怀疑的。谢谢。【参考方案2】:

根据安卓Camera reference:

重要:调用 release() 释放相机供其他人使用 应用程序。应用程序应立即释放相机 onPause() (并在 onResume() 中重新打开()它)。

【讨论】:

以上是关于使用多个活动时何时正确释放相机?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iPhone / iPad 的应用程序中正确使用保留和释放

何时释放带有“自动释放”的对象?

自动释放的对象何时真正释放?

涉及继承、指针对象的释放以及何时这样做的问题

boost库之智能指针

您如何查看 Instruments 8.2 中何时释放内存