在onCreate()>之后,onResume()连续两次调用的onPause()

时间:2014-05-28 15:52:36

标签: android lifecycle android-lifecycle onresume onpause

关于我的孩子活动的生命周期方法,我遇到了一个奇怪的事情。如果我启动并关闭活动足够多次,最终会出现一个问题,在启动时,onPause会在onCreate(跳过onResume)之后立即被调用,然后会被跟踪由onResume连续两次调用。这最终导致RuntimeException中的onResume

这是启动我的活动的代码:

Intent intent = new Intent(MainActivity.this, RecorderActivity.class);
startActivityForResult(intent, AV_CAPTURE);

我的onPause:

protected void onPause() {
    camera.stopPreview();
    camera.setPreviewCallback(null);
    camera.release();
    camera = null;
    super.onPause();
};

我不确定我能在这里提供什么,这一切都非常简单。调用finish()来关闭活动等。

我还应该提一下,该活动是从附加到WebView的Javascript接口触发的。另一个有趣的事情是在上面的第一个代码块中的任何地方设置断点似乎可以防止问题发生。

1 个答案:

答案 0 :(得分:3)

虽然我没有得到两次调用简历的答案,但我确实有一个指向Android文档的链接,指出在尝试打开相机时应始终检查异常。见这里:

http://developer.android.com/guide/topics/media/camera.html#access-camera

在onPause中,请确保将Camera对象设置为null。然后在onResume中,如果您的相机不为空,则只尝试调用getCameraInstance()。