我正在阅读文章“管理活动生命周期”(http://developer.android.com/training/basics/activity-lifecycle/index.html),我有点困惑。也许首先我会试着说出我的应用程序做了什么。所以,这是某种http客户端。用户登录到服务器和客户端存储授权(会话 ID)。登录后,TimerTask 正在执行,每 10 秒从服务器获取一些小 json,顺便说一下,服务器知道授权密钥仍然有效(通常它有效约 30 分钟)。在这个 json 中可能是一些应该向用户显示的事件(我为此使用通知管理器)或用户应该回答的问题(我正在显示带有“是”、“否”、“不要”的自定义对话框不知道”,然后 POST 回答到服务器)。
当我的应用程序处于前台时,这可以正常工作,但我真的不知道如果应用程序停止/暂停该怎么办。
我的疑惑:
- 我希望即使用户单击主页按钮或出现其他应用程序,TimerTask 也应该工作。有两个原因:一 - 需要通知用户有关事件,二 - 我需要保持活动会话 ID。但是这篇文章说,当活动在前台时,它应该释放资源。这是什么意思?什么是限制?我必须停止计时器吗?
- 文档说系统可以在不再需要时终止应用程序。不再需要是什么意思?当用户不使用它或应用程序代码暂时什么都不做时?我的 TimerTask 可以让应用程序保持活动状态吗?
- 存储授权密钥。在系统重新创建活动(如方向更改等)的情况下,我需要记住会话 ID。我用于此 SharedPreferences 对象。问题是使用这个对象,密钥保存在数据库中,我无法识别我的应用程序何时永久关闭(这意味着“注销”)或只是因为方向改变而重新创建。当用户在几个小时后再次运行应用程序并且我的活动恢复死会话 ID(我的应用程序看起来像“已登录”,因为授权变量不为空并且我将此状态用作标志)时,会发生这种情况。我需要一些 SharedPreferences 对象的临时版本。onSaveInstanceState 中传入的 bundle 对象呢?是暂时的吗?
问候