我有一个服务触发在单独的线程中对位图进行一些计算。在内存中,我有许多位图要处理,因此我遇到了问题。
当只有服务正在运行(活动暂停/隐藏/其他)时,我想在不更改任何 UI 的情况下处理这些位图。但仅当活动位于顶部(可见/活动/正在运行)时,我才想刷新 ImageView 以显示当前处理的位图(它将是 5 FPS)。
那么如何检查活动是否正在运行呢?如何从服务轻松更新 ImageView?(我可以传递位图或文件路径)。是否建议将服务绑定到活动?使用信使?
那么如何检查活动是否正在运行呢?
不要。
如何从服务轻松更新 ImageView?
使用事件总线实现,如LocalBroadcastManager
、greenrobot的EventBus或Square的Otto。让服务在位图准备就绪时引发事件。当活动位于前台时,让您的活动注册事件,当活动在后台时取消注册。然后,服务不关心活动发生了什么 - 事件总线处理所有这些。
下面是此模式的实现:
-
LocalBroadcastManager
-
绿色机器人的事件巴士
-
史克威尔的奥托
是否建议将服务绑定到活动?
Android中确实没有这样的概念。