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