Android 更新服务中的数据然后在活动中通知DatasetChanged的正确方法

Android 更新服务中的数据然后在活动中通知DatasetChanged的正确方法,android,android-fragments,android-listview,android-service,notifydatasetchanged,Android,Android Fragments,Android Listview,Android Service,Notifydatasetchanged,我面临这样一种情况,在我的聊天应用程序中,我维护服务中的对话,当一条新消息添加到其中时,我需要更新活动片段中的listview。 我试着更新对话,然后发送一个以片段形式接收的广播,它似乎可以工作,但过了一段时间,我意识到有时我会因为非法状态异常而崩溃。 我认为这是一个微不足道的情况,那么必须有一个标准/通用的方法来处理这个问题。 注意:我在我的应用程序中使用Otto,如果我试图通过它通知UI,它能工作吗? 提前感谢。由于这是一次聊天,您可以在案例中保存一些历史记录,以便向用户显示以前/收到的消息

我面临这样一种情况,在我的聊天应用程序中,我维护服务中的对话,当一条新消息添加到其中时,我需要更新活动片段中的listview。 我试着更新对话,然后发送一个以片段形式接收的广播,它似乎可以工作,但过了一段时间,我意识到有时我会因为非法状态异常而崩溃。 我认为这是一个微不足道的情况,那么必须有一个标准/通用的方法来处理这个问题。 注意:我在我的应用程序中使用Otto,如果我试图通过它通知UI,它能工作吗?
提前感谢。

由于这是一次聊天,您可以在案例中保存一些历史记录,以便向用户显示以前/收到的消息。以下是最重要的方法:

  • 使用数据库。DB存储所有消息等。服务更新DB,发送本地广播,加载程序接收广播并触发onContentChanged,加载程序从DB加载数据,UI(片段、活动等)从加载程序接收新数据

  • 使用单例管理器保存(当然,仅在运行时)消息。收到服务后,通知经理添加新邮件。UI已订阅manager以侦听更改。Manager通知订阅者有关新消息的信息


  • 我相信还有其他的场景和解决方案,这取决于您到底想做什么。

    这些对话都是非持久性数据。我认为这些解决方案很好,但我的应用程序还没有准备好。我不能用更简单的解决办法吗?