后台数据连接的最佳实践是什么

Garfield 2020-01-14 06:19:33
初学,用kotlin

自己做了个聊天室,封了一个网络库和一个界面app
库是个单例,负责网络部分的操作。负责建立服务器的连接,通讯。
界面有几个activity,从登陆,在线列表,到聊天界面,跨了几个activity,都要使用这个单例进行通讯,关注的事件也不一样,登陆页只关心登陆是否成功,在线列表页关心是否有人邀请聊天,是否掉线,聊天界面关心聊天消息和是否掉线。

我想到的方案是库有个listener interface的array,当前activity onCreate的时候add一下,onPause/onStop的时候remove一下
比较麻烦的是每个activty都要实现listener handler,分别注册和反注册。

不知道有什么更优的方式?
...全文
257 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Garfield 2020-01-15
  • 打赏
  • 举报
回复
好的,我看了mvvm有用到这个,稍后我研究下,谢谢
只为搞笑 2020-01-15
  • 打赏
  • 举报
回复
可以了解一下 LiveData 的原理,它实现了跟随 LifecycleOwner 自动注册与注销。你可以查看一下源码,Activity与Fragment 实际上都实现了 LifecycleOwner 这个接口类,使得其它类可以获取 Lifecycle 对象从而监听他们的生命周期。你可以在你的单例类注册方法中增加 LifecycleOwner 参数,增加当传入LifecycleOwner 生命周期走到destroy时自动移除对应的监听处理。这样你的类只需要注册,而不需要注销。而且你可以只在 onCreate的时候注册,在你的单例类中判断 LifecycleOwner 当前是否处于活跃状态来决定是否回调给他。 其实更简单的是直接使用 LiveData 来实现你的网络连接单例类,
Garfield 2020-01-14
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
写一个基类的activity
如果fragment也要用那就要做两个?
bdmh 2020-01-14
  • 打赏
  • 举报
回复
写一个基类的activity

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧