Android:确定应用程序何时最终确定与销毁屏幕方向更改

时间:2010-03-20 02:49:16

标签: android screen-orientation

我对Android世界相对较新,并且我很难理解整个屏幕定位循环是如何工作的。据我所知,当方向从纵向变为横向或反之时,活动会被破坏,然后重新创建。因此onCreate函数中的所有代码都将再次运行。所以这是我的情况:我有一个应用程序,我正在处理它登录到一个网站,检索数据,并将其显示给用户。虽然这都是在后台线程中完成的,但启动这些线程的代码位于onCreate函数中。现在,问题在于每当用户更改屏幕方向时,应用程序将登录,检索数据并再次将其显示给用户。我想要做的是设置一个布尔值,告诉应用程序是否已登录,因此它知道在调用onCreate函数时是否必须登录。只要应用程序在内存中,HttpClient就会存在并包含用户登录的cookie,但当应用程序被系统杀死时,它们就会消失。所以我假设我需要做一些事情,比如在应用程序被杀死时将登录的布尔值设置为false但是因为在屏幕旋转时调用onDestroy,这怎么可能?我也查看了finalize函数和isFinishing(),但这些似乎无法正常工作。

更短版本:如何区分应用程序何时从内存中被杀死,以及活动何时被旋转?以及每个事件的不同代码?

非常感谢任何帮助或正确方向的观点。谢谢!

2 个答案:

答案 0 :(得分:9)

马特,您需要告诉平台您的活动可以处理方向更改,以便不需要重新启动它。
为此,请将android:configChanges="keyboardHidden|orientation"添加到AndroidManifest.xml中的活动声明中。更多信息here

答案 1 :(得分:2)

正如亚历克斯指出的那样,你可以告诉android在进行方向更改时不重启你的活动......当你必须重新启动应用程序时(可能是屏幕方向改变你的渲染上下文等......)你可以得知这些变化通过覆盖Activity中的onConfigurationChanged(..)。