6

我正在开发一个 Android 项目,其中我需要将一些图像加载到 GridView。图像可能在缓存中,如果缓存丢失,则查询 Internet 服务器。我的设计是使用两个线程来完成加载任务。一个线程读取缓存,一个线程下载。所以有 3 个线程,包括 UI 一个。它们每个都有自己的消息队列,并使用 Handler 进行通信。

我的问题是我是否应该在这种情况下使用绑定服务?其实我已经实现了上面的设计,看起来没什么问题,但是 GC 工作非常努力,这可以从 logcat 中推断出来。

另一个问题是当我使用 DDMS 监控线程时存在多个线程。这是因为在多个活动中使用了相同的加载机制。在调用 onPause() 时,我让线程退出了它的消息循环,我确信它们中只有两个同时处于活动状态。但我可以在 DDMS 中看到所有这些。(顺便说一句,为什么线程仍然存在?我让 thread = null;)

所以总而言之,我的问题是:这个加载任务能否从绑定服务中受益?

4

1 回答 1

1

那么为什么要使用多个线程?您需要在后台加载图像,完成后,将其显示在 UI 中。对于图像来自的 UI 来说,这真的无关紧要。并且使用多个线程并不能使它更快,只会消耗更多的内存。只需使用单个后台线程:首先它会命中缓存,如果没有命中则下载。

服务适用于您想要做一些不需要 UI 的事情。如果你需要实时更新 UI,服务没有多大意义。

于 2012-12-03T01:32:46.863 回答