管理“会话”对象的最佳技术

时间:2015-04-27 09:42:17

标签: android android-service

我知道这可能不是一个适当的问题,但我需要为我的应用提供建议。

我有一个管理一些网络请求(同步和异步)的库。在任何可能的请求之前,用户必须登录,并在此时创建会话对象。之后,我必须将此对象用于所有请求。 我的问题是如何管理这个对象。

我有两种方法:

  1. 将其存储为Application子类内的静态var。优点是它易于使用。缺点是我实际上不喜欢这种方法。
  2. 用户登录后,我可以使用Service命令启动startService子类,并在其中存储会话对象。优点是我觉得这更像是'Androidish'。缺点是,当用户使用应用程序时,我害怕Service被破坏。如果在应用程序暂停时它被破坏,那么如果不经常这样做就可以了。 Offcorse我可以在用户登录后在每个bindService中使用Activity方法,甚至可以创建Notification以在长期任务期间保持活动状态,但我不确定这是正确的决定。
  3. 我之前从未使用过复杂的服务(对于单个任务来说只是简单的服务),所以我需要一个正确的建议,我找不到任何正确的例子(每个都太简单了)。请注意,对于某些与会话相关的任务,我必须生成线程,我还需要以某种方式检查我的Activity类中是否正在进行某些任务(只是为了显示其中的进度指示)。

2 个答案:

答案 0 :(得分:0)

如果你想做一些真正的“Androidish”,让系统使用AccountManager

处理你的账户

这是一个很好的教程:https://udinic.wordpress.com/2013/04/24/write-your-own-android-authenticator/

希望它有所帮助!

答案 1 :(得分:0)

  1. AccountManager:但如果您计划使用oAuth并刷新令牌,那会有点麻烦。
  2. SharedPreferences:只需将用户信息存储在共享首选项中(请不要存储密码),然后在开始网络请求之前,通过查询共享首选项(从此处查询会话对象)检查用户是否已登录。