我知道当您将设备从横向更改为纵向,反之亦然时,会调用onCreate
方法。这对我来说是个问题的原因。
假设我有一个数据库,其中包含要执行的下载。我打算制作一个启动画面,DAO对象将这些数据转换为对象并将它们放入Vector<DownloadTask>
。这将发生在AsyncTask
的{{1}}上
doInBackground()
启动画面将启动新的onPostExecute
。
到目前为止一切都很好,除非我必须处理方向改变
启动屏幕后的新Acitivity将启动Activity
,负责安排下载。这将在Timer
中开始。 onCreate
全部实现DownloadTask
所以它们是线程。
当下载过期或突然停止时,线程应该告诉调度程序并减少同时运行的线程数。这是限制同时下载的数量。
所以,如果时机是正确的(或错误的),使得方向改变和线程的结束排在一起,定时器会发生什么?它是否为空?
当方向改变时,变量是否重置为默认值?
另外,如何防止方向改变?像一些游戏一样
答案 0 :(得分:2)
当方向改变时,变量是否重置为默认值?
如果它们是Activity
级别变量,那么它们将返回其默认值,因为Activity
每次都被销毁并重新创建。为了避免这种情况,您可以每次将变量保存在finish()
中,但这可能会很麻烦,因为您不知道何时会发生这种情况(但有很多方法)。您还可以在manifest.xml
中指定通过添加
android:configChanges="orientation"
到<activity>
中的manifest
代码。在文档中,他们不推荐这个,但我认为主要是为了掩盖他们的屁股。我这样做,到目前为止没有任何问题。这将使Activity
不被破坏。
另外,如何防止方向改变?
您也可以通过添加类似
的内容在manifest
中执行此操作
android:screenOrientation="portrait"
指向您希望拥有某个<activity>
的{{1}}个Activities
标记。