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

前端之家收集整理的这篇文章主要介绍了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相关文章