Android:调用Camera Intent之后,活动正在销毁

我有两个活动(A1,A2)。 A1打电话给A2,从A2我打电话给下面的照相机意图

launchIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); launchIntent.putExtra(MediaStore.EXTRA_OUTPUT,photoPath); startActivityForResult(launchIntent,CAMERA_REQUEST); 

它打开相机,我可以拍照。 但是,一旦我点击保存button(在S3中的勾号button)出现问题,我的onActivityResult不被调用,而是A2的onDestroy方法被调用。 我在onActivityResult fn中有几个逻辑要做。

我已经阅读了一些post在Stackoverflow这一点,但我不能得到有用的输出。我有我的清单像这样我的第二个活动(A2)

 android:configChanges="keyboardHidden|orientation|locale" android:screenOrientation="portrait 

注意:在HTC One X中,我的onActivityResult fn被调用,但是在S3中,第二个Activity(A2)正在被销毁

Plz分享你对此的想法。 提前致谢

我有同样的问题。我会疯了,但最后我在这里find了解决办法。 问题是,当你点击照相机的“保存”button时,活动调用改变方向的方法,它会破坏和重新创build。 尝试设置

android:configChanges="orientation|screenSize"

在Android清单(不仅android:configChanges="orientation"因为在这里build议,它不适用于API级别13或更高)。

它防止摧毁活动,它为我工作。

启动相机需要大量的内存。 所以在内存不足的设备上,android系统closures在后台运行的Activity,因此调用onCreate()。 由于你给这个photopath成为null,你将无法得到保存的图像。

解决scheme是保存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); } 

确保你没有“不要保留活动”的开发者设置,因为它会破坏你要离开的活动。

相机应用程序需要大量的内存和释放内存,操作系统必须杀死后台应用程序,包括你的。 这对所有Android应用程序都是正常的。 当相机应用程序返回时,您的活动将被重新创build。 要保留活动状态信息,请覆盖onSaveInstanceState()来存储数据并将其读回到onCreate()

我的活动有很多任务运行时,我打电话相机意图..我有GPS位置监听,和更多的任务。

当它从相机意图返回时,我需要在图像的拍摄位置上的地图上添加标记。因此,如果用户拍摄了多张照片,则应该为每张照片显示标记。

如果每当我打电话给Camera Intent的时候它会破坏我的Activity,我之前关于标记和它们的位置的所有信息都将丢失。而且,我将不得不重新初始化地图。 这是我的应用程序的一个大问题。

是的,只有在风景模式下拍照时才会发生。 如果我用肖像拍照,一切都很好。

我会尝试使用android:configChanges="orientation|screenSize"正如这里所build议的..希望它会帮助!