我知道当您将设备从横向更改为纵向时,反之亦然,onCreate
方法被调用。这对我来说是一些问题的原因。
假设我有一个数据库,其中包含要执行的下载。我计划制作一个闪屏,其中 DAO 对象会将此数据转换为对象并将它们放入 Vector<DownloadTask>
中。 .这将发生在 AsyncTask
上的 doInBackground()
.
onPostExecute
初始屏幕将启动一个新的 Activity
.
到目前为止一切都很好,除非我必须处理方向变化。
启动画面后的新 Acitivity 将启动一个 Timer
负责安排下载。这将在 onCreate
开始. DownloadTask
所有工具Runnable
所以他们是线程。
当下载结束或突然停止时,线程应该将此告知调度程序并减少同时运行的线程数。这是为了限制同时下载的数量。
因此,如果时间正确(或错误),方向改变和线程的完成对齐在一起,Timer 会发生什么情况?它会是 null 吗?
当方向改变时,变量是否重置为其默认值?
另外,如何防止方向改变?就像一些游戏一样
最佳答案
When orientation changes, are the variables reset to their default value ?
如果它们是 Activity
level 变量然后是的,它们将返回自 Activity
以来的默认值每次都被销毁并重新创建。为避免这种情况,您可以将变量保存在 finish()
中。每次但这可能会很困惑,因为您不知道何时会发生这种情况(但有办法解决)。您还可以在 manifest.xml
中指定您将通过添加
android:configChanges="orientation"
到您的<activity>
manifest
中的标签.在文档中,他们不推荐这样做,但我认为主要是为了掩盖他们的屁股。我这样做了,到目前为止还没有遇到任何问题。这将保留 Activity
从被摧毁。
Also, how do I prevent orientation change ??
您也可以在 manifest
中执行此操作通过添加类似的东西
android:screenOrientation="portrait"
到<activity>
那些 Activities
的标签你希望拥有某种 orientation
.
关于android - 变量是否保留方向变化的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18264380/