2014-12-22 44 views
1

我写一个Android应用程序,我的形式接受数据,然后调用Android相机为通过下面的代码的图片上传:相机API调用破坏父活动

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

    fileUri = getOutputMediaFileUri(); 

    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); 

    // start the image capture Intent 
    startActivityForResult(intent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE);  

呼叫工作得很好,相机图像成功返回。但问题出现在这之后。

我一直在测试2-3电话,分别是:1。 A116福邦2. 三星Galaxy大 3.小蜜

应用程序运行的Micromax的手机上就好了。

三星手机有一个问题,导致旋转应用程序崩溃。我找到了一个修补程序,下面添加到清单:

android:configChanges="orientation|keyboardHidden|screenSize"  

但是,小米手机有一个问题。它似乎总是调用“onCreate()”方法,每次相机意图返回一个图像。这扰乱了我从用户接受的以前的表单数据,通过做出不必要的API调用。

我试图通过下面的代码重写及的onSaveInstanceState onRestoreInstanceState:

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 

    // save file url in bundle as it will be null on scren orientation 
    // changes 
    outState.putParcelable("file_uri", fileUri); 

} 

@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 

    // get the file url 
    fileUri = savedInstanceState.getParcelable("file_uri"); 
}  

但onRestoreInstanceState永远不会被调用。 感谢

+0

也使用onActivityResult()方法。 –

+0

我已经用它来获取相机结果 –

回答

0

这SO Link已经当onRestoreInstanceState方法被调用

对于快速参考的详细信息,我粘贴此从另一个链接

onRestoreInstanceState(或保存的onCreate束)将被解雇时,该活动由于缺乏资源而被系统杀死,并在您回到该活动时重新启动。所以如果你在前面开始一个新的Activity并回到前一个(你正在尝试做的事情),那么活动A可能不会被杀死(刚刚停止)并重新启动,而无需通过onRestoreInstanceState。

+0

对不起。但这不适合我 –