怎样使fragment不可见时依然接收Service广播数据 5C

目前我有一个Service不断接收蓝牙数据,我希望当fragment被切换时也能不间断接收Service发送的数据,有没有大佬知道该怎么实现

4个回答

我的想法是采取曲线救国,当fragment被切换时,在一个全局变量类里接收Service的数据,
然后当fragment展示时,在加载的时候先从全局变量类取出存储的数据,并将Service的数据的推送接收过来。

这个涉及到Fragment的生命周期问题,Fragment被切到后台,在它被回收掉之前都可以接受Service发过来的数据。
一般,在Fragment.hide()之后,它依然在内存之中。
虽然不清楚你希望Fragment在后台也接受数据的原因,不过一般当Fragment被切到后台的时候,还是尽量释放掉一些强引用,防止内存溢出。
Service发过来的信息,你可以持久化到本地。
如果需要,你可以让Service持有一个句柄,用handler做媒介传递数据。
这样在Fragment重可见的时候,能够保证数据的连续性。

把service返回的数据保存在本地,当fragment切回的时候 在回调方法中 把数据读出来刷新即可

用粘性广播就可以了吧,及时你解注册的接收器,进去之后重新注册也可以实现,另外就是将接收器定在fragment的activity中,使用viewmodel保存结果,fragment每次进入onresume从videmodel中获取数据,也会立即刷新

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐