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议的..希望它会帮助!