Galaxy S3 - 以肖像模式拍摄照片会破坏活动

时间:2013-04-22 18:37:12

标签: android android-activity camera galaxy

所以,这个问题已在本论坛上以多种形式提出,但没有一个答案对我有所帮助。我有一个我只能在三星Galaxy S3上重现的错误。

我想简单地使用手机的相机拍摄并存储照片,但在我收到onActivityResult的回复之前,我的活动正在被销毁。这只发生在我以纵向模式使用相机时,在横向模式下它很好。

我正在使用此代码启动相机:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, Config.ACTIVITY_TAKE_PHOTO);

在纵向模式下,我从未看到对onActivityResult的调用(来自Camera活动),我只看到在我的启动活动中调用的onDestroy()。日志中没有异常或错误,并且没有明显错误使其崩溃。

我见过帖子建议在Manifest中添加“android:configChanges =”orientation | keyboardHidden“”,并做很多其他事情来管理使用相机时发生的方向变化,但到目前为止没有任何帮助

还有其他人解决了这个问题吗?

2 个答案:

答案 0 :(得分:19)

如果您的定位超出API级别13,添加

android:configChanges="orientation|keyboardHidden"

到Manifest是不够的。

Android documentation

检查此摘录
  

注意:如果您的应用程序的目标是13级或更高级别(由minSdkVersion和targetSdkVersion属性声明),那么您还应该声明“screenSize”配置,因为当设备在纵向和横向之间切换时,它也会发生变化。

因此尝试添加

android:configChanges="orientation|keyboardHidden|screenSize"

到您的清单文件。这应该可以解决你的问题。

答案 1 :(得分:1)

Android可以在某些情况下调用destroy()方法。一个是我们使用方法finish()。另一种方法是使用Activity类的isFinishing()方法。如果它确实正在最终确定可以最终确定它们的资源,否则,你可以保持值分配一个继承Application的类

@Override
protected void onDestroy() {

    final YourApp app = (YourApp) getApplicationContext();
    if (app != null && isFinishing()) {
        app.finalizeAppResources();
    }

    // ...

    super.onDestroy();
}
相关问题