我有一个画布,当方向改变时会重绘。这是一个不是Android提供的自定义画布。
当屏幕布局发生变化时,应用程序状态和(所有视图的状态)都会重置。我只将屏幕方向改为肖像;它保持屏幕布局不变,但应用程序再次重置。
我查看了文档,发现当方向发生变化时,活动会被销毁并重新启动。 Savestate()无法保存和加载位图数据或我的自定义画布所需的任何大型数据。
我再次查看了文档,并找到了处理运行时更改主题,其中提到了onConfigurationChanged(),在发生特定配置更改时会调用它,在我的情况下是'orientation'。此方法可防止重新启动,并使开发人员如何实现配置更改。它甚至在最后一段中提到,如果我不实现该方法,那么这只会导致活动跳过onRestart()并且什么都不做。我将清单文件设置为
android:screenOrientation="portrait"
android:configChanges="orientation"
我没有实现onConfigurationChanged()。但这也无济于事。我不知道为什么。这对我来说似乎很有帮助。
如果您有任何问题,请发布解决方案。 此外,应用程序需要一些合理的时间,我希望应用程序不会在方向更改时重新启动。实际上,当发生这种情况时,我不想做任何事情。 我也在使用模拟器,所以请澄清它是否只是模拟器问题。
P.S。我的互联网连接已关闭,我正在使用我的愚蠢移动客户端。 我检查了离线文档。请耐心等待拼写。我想找到解决方案,但目前我很难过。
答案 0 :(得分:7)
在AndroidManifest.xml
中使用此功能<activity
android:name="MyActivity"
android:configChanges="orientation|keyboard|keyboardHidden"
android:screenOrientation="sensor" />
答案 1 :(得分:1)
在清单中写下这段代码:
android:configChanges="orientation|screenSize|keyboardHidden"
答案 2 :(得分:0)
对于AndroidManifest中的每个活动,都可以指定screenOrientation。例如,要指定活动始终保持纵向模式,可以执行以下操作 添加到activity元素:
机器人:screenOrientation = “纵向”
同样,可以使用以下方法指定横向模式:
机器人:screenOrientation = “风景”
然而,之前仍然导致活动被破坏并在艰难时重新启动 键盘被滑出。因此,第三种方法是可行的:告诉Android系统 应用程序应该处理方向和键盘滑出事件。这是通过 将以下属性添加到activity元素: 机器人:configChanges = “取向| keyboardHidden”