android – EventBus:当应用程序在后台时,活动不会收到事件

我正在使用EventBus来进行活动和服务之间的沟通.
今天我有一个问题,不知道为什么.

>我有活动,片段和服务.他们都工作正常.
>在活动和片段我注册他们接收从服务提供的事件
>在Activity和Fragment中,当onDestroy()被调用时,我取消注册它们.
>在正常情况下,当服务提供事件时,片段和活动可以接收这些事件并且正常工作.
>但是当App被推送到背景(按Home或Power按钮)时,只有Fragment接收从Service发送的事件,Activity没有收到.
>我没有在活动和片段的onPause()中做任何事情.

题:

有什么解释吗?当应用程序在背景上被推送时,如何使我的Activity收到像Fragment那样的事件?

解决方法

用户按下/ home按钮时,Activity可以随时销毁,因此您将无法使用EventBus接收数据.如果在Activity处于背景状态时如何尝试接收数据,则可能会泄漏内存并且应用程序将崩溃.

用户恢复活动时,可以使用其他方法获取活动中的数据.

您可以通过用户sharedpreferences或本地数据库来保存通过的结果.当用户导航回活动时,从sharedpreferences或数据库中读取.

这样就不会有内存泄漏或数据丢失的问题.

编辑1:

总是建议在onPause或onStop上取消注册监听器,因为活动不在前台时不需要这些事件.而且由于onDestroy()不能保证被调用,所以当Activity不再打开时,您可以继续接收广播.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...