强制Android在重定向方向上不重绘活动

Ama*_*lam 2 android android-lifecycle

我一直在努力解决这个问题.
虽然我已经在Orientation Change上阅读了很多内容,但Android会杀死一个活动并将其作为一个新活动启动,而处理此活动的唯一方法是将所有内容保存在内部onSaveInstanceState()并尝试将其恢复onCreate().

但是我的活动在不同时间做了很多不同类型的网络活动,如果在执行网络活动时改变方向,我将不得不处理许多不同的复杂场景.

是否有任何简单的方法可以指向Android,当方向发生变化时,根本不需要重新绘制此活动,以便自动保存所有数据并重新使用它?

我想知道是否有类似的东西.

Mic*_*ael 10

是的,您可以将属性添加android:configChanges="orientation"AndroidManifest.xml文件中的活动声明中.

编辑:该android:configChanges属性的目的是防止在真正需要时重新创建活动.例如,"相机"应用程序使用此属性,因为在发生方向更改时,不得重新创建相机预览屏幕.用户希望相机预览在旋转设备时没有任何延迟,并且相机初始化不是一个非常快速的过程.因此,Camera应用程序可以手动处理方向更改.

对于大多数应用程序,在方向更改期间是否重新创建活动并不重要.但有时,由于活动创建缓慢,活动执行的异步任务或其他原因,在此过程中持久保存活动会更方便.在这种情况下,可以稍微调整一个应用程序并使用该android:configChanges="orientation"属性.但是,当您使用此调整时,了解真正重要的是您必须实现正确保存和恢复状态的方法!

因此,总结一下这个答案,android:configChanges可以让您提高应用程序的性能,或者让它在某些极少数情况下"本机"运行,但它不会减少您必须编写的代码量.


Com*_*are 6

但是我的活动在不同时间做了很多不同类型的网络活动,如果在执行网络活动时改变方向,我将不得不处理许多不同的复杂场景.

然后将该逻辑移出活动并进入服务.