如何在Android中使用RxJava从多个源获取消息

时间:2015-05-07 13:56:42

标签: android rx-java

我有聊天应用程序。我想为我的聊天构建消息管理器,如下图所示。 基本上我有ChatActivity来显示消息。理想情况下,我想按照此顺序向MessageManager提供来自MessageManager的消息。

  1. 显示来自本地数据库的20条最新消息。
  2. 如果用户滚动,则再获取20,依此类推。
  3. 如果本地数据库中没有消息,则通过偏移量从服务器获取消息。
  4. 也可以通过套接字发送新消息(或按照图片推送)。
  5. 我知道RxJava对这种类型的结构有好处,但我不知道如何构建它。

    enter image description here

1 个答案:

答案 0 :(得分:3)

Generally, such app can get quite complicated but here is a simple demonstration how the stream could be assembled:

import unittest

def decorating_meta(decorator):
    class DecoratingMetaclass(type):
        def __new__(self, class_name, bases, namespace):
            for key, value in list(namespace.items()):
                if callable(value):
                    namespace[key] = decorator(value)
            return type.__new__(self, class_name, bases, namespace)

    return DecoratingMetaclass

def skipUnlessHasattr(obj):
    if hasattr(obj, 'StepDebug'):
        return lambda func : func
    return unittest.skip("{!r} doesn't have {!r}".format(obj, 'StepDebug'))

class Foo(unittest.TestCase):
    __metaclass__ = decorating_meta(skipUnlessHasattr)
    def test_Sth(self):
        self.assertTrue(False)

if __name__ == '__main__':
    unittest.main()