Android - 屏幕方向重新加载 Activity

标签 android

我要重新问这个问题,因为那里有太多不好的信息,这真的很令人沮丧。简而言之,我不希望设备方向发生变化时发生任何变化或发生任何事情。针对此问题的 2 个最流行的“解决方案”是:

1.您可以通过在您的 list 中添加 android:screenOrientation="portrait"(或“landscape”)来将 Activity 锁定在一个方向。

2.您可以通过在标记中指定 android:configChanges="screenOrientation"来告诉系统您打算自己处理屏幕变化。这样, Activity 将不会被重新创建,而是会收到一个回调(您可以忽略它,因为它对您没有用)。

这些都不起作用。所以让我更详细地解释我的特殊问题......

我正在试验一个非常简单的应用程序作为学习练习。我在服务器上有一个文本文件。文本文件中有 1 个东西:一行中的一个整数。这个数字是这台服务器上同时存储的图片文件的数量,图片的名称都是0.jpg、1.jpg、2.jpg等。

我的所有代码都在我的 Activity 的 onCreate 方法中(就像我说的,它是一个简单的应用程序)。

应用程序在运行时执行以下操作:

从文本文件中读取数字。 生成一个从零到文件中数字的随机数。 使用 URL 中的随机数将随机图像加载到 ImageView 中。

当屏幕旋转时,我不希望这一切再次发生。我只是希望什么都不会发生...除了屏幕应该明显旋转并且图像应该缩放以适合它,它确实如此。但每次屏幕旋转时,所有代码都会运行并选择一个新的随机图像。有人可以给我一个简单的解决方案和工作代码来解决这个问题吗?我是通过观察来学习的,如果您不能提供代码示例,那将无济于事。

提前致谢。

ps...我不是在寻找一种不同的方式来做我正在做的事情,这不是重点。我希望修复我目前做这件事的方式。

最佳答案

除非应用程序的 API 级别为 12 或更低,否则使用 android:configChanges="orientation" 的解决方案将不起作用。

在 API 级别 13 或更高版本中,屏幕尺寸会随着方向的改变而改变,因此这仍然会导致 Activity 在方向改变时被销毁并启动。

像下面那样简单地添加“screenSize”属性:

<activity>
    android:name=".YourActivityName"
    android:configChanges="orientation|screenSize">
</activity>

现在,当您更改方向(和屏幕尺寸更改)时, Activity 会保持其状态并调用 onConfigurationChanged()。当方向改变时,这将保留屏幕上的任何内容(即:Webview 中的网页)。

从这个网站了解到:http://developer.android.com/guide/topics/manifest/activity-element.html

此外,这显然是一种不好的做法,因此请阅读下面有关处理运行时更改的链接:

http://developer.android.com/guide/topics/resources/runtime-changes.html

关于Android - 屏幕方向重新加载 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5914457/

相关文章:

Android Gradle~如何添加Maven来获取Android Spring Security?

android - 如何让一个应用适合不同的手机

用于订阅/发布 MQTT(真正的小型消息代理)的 C# 客户端库

java - Android CardView布局截图

android - 使用 Android 的 SoundPool 类播放音频文件序列

java - 如何在 Eclipse 中导入 Java 库?

Android:如果设备位于室内,如何以编程方式识别?

java - 是否可以在 Android Pepper Robot 模拟器中测试讨论操作

Android koush/ion lib 无法发布和接收 JSON 响应

java - 将此模式转换为 Pattern.matches(..) 的正则表达式