【发布时间】:2012-12-05 14:58:18
【问题描述】:
我正在开发 XMPP 聊天应用程序,并且正在使用 aSmack。我有一个保存 XMPP 连接、注册名册和数据包侦听器等的服务。
目前,我的服务登录然后调用 connection.getRoster() 并在 Singleton 类中存储/更新所有 RosterEntrys(及其状态)。然后在主要活动中,我通过调用 Singleton.getInstance().getRosterEntrys() 获取所有这些 RosterEntrys 并填充 listView。
毫不奇怪,我遇到了各种各样的竞争条件,这不是线程安全的。我正在考虑完全放弃 Singleton 的想法,但我不确定最好的方法。
以线程安全的方式将 Set 从服务传输到 Activity 的最佳方法是什么?我看到提到将 Singleton 与 SynchronizedSet 一起使用。这值得研究吗?还有其他建议吗?
【问题讨论】:
标签: java android singleton android-service asmack