下载时是绑定服务还是自定义线程?

All*_*003 6 java service android caching multitasking

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

我的问题是我是否应该在这种情况下使用绑定服务?实际上我已经意识到上面的设计并且它似乎没有错,但GC正在努力工作,这可以从logcat推断出来.

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

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

Nik*_*kov 1

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

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