4

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

更短的版本:如何区分应用程序何时从内存中被终止与活动正在轮换以及每个事件的不同代码?

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

4

2 回答 2

9

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

于 2010-03-20T02:55:35.370 回答
2

正如亚历克斯指出的那样,您可以告诉android在进行方向更改时不要重新启动您的活动...当您必须重新启动应用程序时(可能屏幕方向会更改您的渲染上下文等...)您可以通过覆盖 onConfigurationChanged 来了解更改(..) 在您的活动中。

于 2010-03-20T10:43:52.350 回答