Android:确定应用程序正在进行最终化还是销毁以进行屏幕方向更改。

4
我相对Android世界还比较新,对屏幕方向的变化如何工作有些困惑。我知道当方向从纵向变为横向或者反之时,活动将被销毁并重新创建。因此,在onCreate函数中的所有代码都将再次运行。现在,我的情况是这样的:我正在开发一个应用程序,它登录到网站,检索数据并将其显示给用户。虽然这一切都是在后台线程中完成的,但启动这些线程的代码在onCreate函数中。问题在于,每当用户更改屏幕方向时,应用程序将重新登录、检索数据并再次将其显示给用户。我想做的是设置一个布尔值,告诉应用程序它是否已经登录,以便它知道在调用onCreate函数时是否必须登录。只要应用程序在内存中存在,HttpClient就会存在,并包含从登录用户时获取的cookie,但当应用程序被系统杀死时,这些cookie将消失。因此,我认为我需要做一些像在应用程序被杀死时将登录的布尔值设置为false的操作,但由于onDestroy在屏幕旋转时被调用,所以这是否可能呢?我还研究了finalize函数和isFinishing(),但似乎它们都不起作用。
简短版:我如何区分应用程序被从内存中杀死和活动被旋转时的不同事件,并为每个事件编写不同的代码?
非常感谢任何帮助或指引。谢谢!
2个回答

9
Matt,请告诉平台你的活动可以处理方向变化,这样就不需要重新启动它了。
为此,在AndroidManifest.xml中的活动声明中添加android:configChanges="keyboardHidden|orientation"。更多信息请参见此处

2
如Alex所指出的,当Android进行方向更改时,您可以告诉它不要重新启动您的活动... 当您必须重新启动应用程序(也许屏幕方向更改了渲染上下文等)时,您可以通过覆盖Activity中的onConfigurationChanged(..)方法来获取更改的信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接