我有两个活动(A1,A2)。 A1 A2调用和A2我打电话相机意图如下
launchIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
launchIntent.putExtra(MediaStore.EXTRA_OUTPUT,photoPath);
startActivityForResult(launchIntent,CAMERA_REQUEST);
它打开了相机,我可以拍照。 但问题出现了一次我点击保存按钮(打勾的S3按钮),我的onActivityResult并不而改叫A2的的onDestroy方法被调用。 我在onActivityResult FN做一些逻辑。
我读过的一些#1后对此但是我不能得到that.I有用的输出有我的表现像这样我的第二个活动(A2)
android:configChanges="keyboardHidden|orientation|locale"
android:screenOrientation="portrait
注:在HTC One X的我onActivityResult FN获取调用,但在我的S3次活动(A2)是被破坏掉了
PLZ分享乌尔这个想法。 提前致谢
我有同样的疑难问题将是疯了,但最后我找到了解决办法在这里 。 问题是,当你点击“保存”按钮时,相机的活动呼叫改变方向方法,它会破坏并重新创建。 尝试设置
android:configChanges="orientation|screenSize"
在Android清单(不仅是android:configChanges="orientation"
,因为作为建议在这里 ,它不是API级别13或更高的工作)。
它阻止破坏活动,它为我工作。
启动相机需要大量的内存。 因此,在低内存的Android系统设备关闭活动后台运行,因此的onCreate()被调用。 由于这种photopath你给变空,你不会能够得到保存的图像。
解决方案是拯救photopath而系统摧毁你的活动,然后再恢复它。
@Override
public void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
outState.putString("photopath", photopath);
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// TODO Auto-generated method stub
if (savedInstanceState != null) {
if (savedInstanceState.containsKey("photopath")) {
photopath = savedInstanceState.getString("photopath");
}
}
super.onRestoreInstanceState(savedInstanceState);
}
并且如果您是在片段这样做。
@Override
public void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
outState.putString("photopath", photopath));
super.onSaveInstanceState(outState);
}
@Override
public void onViewStateRestored(Bundle savedInstanceState) {
// TODO Auto-generated method stub
if (savedInstanceState != null) {
if (savedInstanceState.containsKey("photopath")) {
photopath = savedInstanceState.getString("photopath");
}
}
super.onViewStateRestored(savedInstanceState);
}
要确保你没有“不保留活动” Developer设置上,因为它会破坏你离开活动。
相机应用程序需要大量的内存和释放内存,操作系统有杀后台应用程序,包括你。 这是正常的,所有的Android应用。 您的活动将在相机应用程序返回时重建。 为了保持活动状态的信息,重写onSaveInstanceState()
来存储你的数据和读取它们放回onCreate()
我的活动有,当我打电话相机意图运行多个任务..我有GPS定位的听众,还有更多的任务。
当它从相机意图返回我需要在图像拍摄地点在地图上添加标记。所以,如果用户花了多张图片,它应该显示为每个画面标记..
如果它会破坏我的活动我每次通话摄像头意向的一切,我收到了关于标记和它们的位置都将丢失。而同时,我将不得不再次初始化地图的信息。 这对我的应用程序的一个大问题。
是的,当我走在风景模式下的画面才会发生。 如果我拍摄照片的肖像,一切都很好,到目前为止..
我将尝试使用android:configChanges="orientation|screenSize"
作为这里建议..希望这将有助于!
对我来说,当我能够在开发者模式被称为“ 不保留活动 ”选项发生。 之后我未选中它,而从选择从画廊或从相机应用的图片支持活动将不会重现。