变量是否保留了方向变化的值?

时间:2013-08-16 01:22:36

标签: android

我知道当您将设备从横向更改为纵向,反之亦然时,会调用onCreate方法。这对我来说是个问题的原因。

假设我有一个数据库,其中包含要执行的下载。我打算制作一个启动画面,DAO对象将这些数据转换为对象并将它们放入Vector<DownloadTask>。这将发生在AsyncTask的{​​{1}}上 doInBackground()启动画面将启动新的onPostExecute

到目前为止一切都很好,除非我必须处理方向改变 启动屏幕后的新Acitivity将启动Activity,负责安排下载。这将在Timer中开始。 onCreate全部实现DownloadTask所以它们是线程。

当下载过期或突然停止时,线程应该告诉调度程序并减少同时运行的线程数。这是限制同时下载的数量。

所以,如果时机是正确的(或错误的),使得方向改变和线程的结束排在一起,定时器会发生什么?它是否为空?

当方向改变时,变量是否重置为默认值?
另外,如何防止方向改变?像一些游戏一样

1 个答案:

答案 0 :(得分:2)

  

当方向改变时,变量是否重置为默认值?

如果它们是Activity级别变量,那么它们将返回其默认值,因为Activity每次都被销毁并重新创建。为了避免这种情况,您可以每次将变量保存在finish()中,但这可能会很麻烦,因为您不知道何时会发生这种情况(但有很多方法)。您还可以在manifest.xml中指定通过添加

来处理这些更改
android:configChanges="orientation" 

<activity>中的manifest代码。在文档中,他们不推荐这个,但我认为主要是为了掩盖他们的屁股。我这样做,到目前为止没有任何问题。这将使Activity不被破坏。

  

另外,如何防止方向改变?

您也可以通过添加类似

的内容在manifest中执行此操作
android:screenOrientation="portrait"

指向您希望拥有某个<activity>的{​​{1}}个Activities标记。