我正在编写一个Android应用程序,我接受表单中的数据,然后通过以下代码调用Android相机上传图像:
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. Micromax a116 2.三星Galaxy Grand 小米
该应用程序在Micromax手机上运行良好。
三星手机出现问题,导致应用程序在轮换时崩溃。我在下面添加了Manifest,找到了解决方法:
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 :(得分:0)
这个SO Link详细说明了何时调用onRestoreInstanceState方法
为了快速参考,我将其从其他链接粘贴
当由于缺少资源而系统杀死Activity时,将触发onRestoreInstanceState(或onCreate中保存的bundle),并在您返回时重新启动。因此,如果你在前面开始一个新的Activity并回到之前的(你想要做的事情),活动A可能不会被杀死(只是停止)并重新启动而不通过onRestoreInstanceState。