我有一个服务触发在单独的线程中对位图进行一些计算。 在内存中我有很多要处理的位图,因此我遇到了问题。
当只有服务正在运行(活动暂停/隐藏/无论什么)时,我想处理这些位图而不更改任何UI。 但只有当Activity位于顶部(可见/活动/正在运行)时,我才想刷新ImageView以显示当前处理的位图(它将是5 FPS)。
那么如何检查Activity是否正在运行?如何从服务中轻松更新ImageView? (我可以传递位图或文件路径)。 是否建议将服务绑定到活动?使用Messenger?
答案 0 :(得分:0)
那么如何检查Activity是否正在运行?
别。
如何从服务中轻松更新ImageView?
使用事件总线实现,如LocalBroadcastManager
,greenrobot的EventBus或Square的Otto。当位图准备就绪时,让服务引发事件。让您的活动在活动为前景时注册事件,并在活动在后台时注销。然后,服务不关心活动发生了什么 - 事件总线处理所有这些。
以下是此模式的实现:
是否建议将服务绑定到活动?
Android中确实没有这样的概念。