Android:仅当活动正在运行时,才从服务更新 ImageView



我有一个服务触发在单独的线程中对位图进行一些计算。在内存中,我有许多位图要处理,因此我遇到了问题。

当只有服务正在运行(活动暂停/隐藏/其他)时,我想在不更改任何 UI 的情况下处理这些位图。但仅当活动位于顶部(可见/活动/正在运行)时,我才想刷新 ImageView 以显示当前处理的位图(它将是 5 FPS)。

那么如何检查活动是否正在运行呢?如何从服务轻松更新 ImageView?(我可以传递位图或文件路径)。是否建议将服务绑定到活动?使用信使?

那么如何检查活动是否正在运行呢?

不要。

如何从服务轻松更新 ImageView?

使用事件总线实现,如LocalBroadcastManager、greenrobot的EventBus或Square的Otto。让服务在位图准备就绪时引发事件。当活动位于前台时,让您的活动注册事件,当活动在后台时取消注册。然后,服务不关心活动发生了什么 - 事件总线处理所有这些。

下面是此模式的实现:

  • LocalBroadcastManager

  • 绿色机器人的事件巴士

  • 史克威尔的奥托

是否建议将服务绑定到活动?

Android中确实没有这样的概念。

最新更新