gpt4 book ai didi

java - 下载东西时是绑定(bind)服务还是自定义线程?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:39:40 25 4
gpt4 key购买 nike

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

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

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

总而言之,我的问题是:此加载任务能否从绑定(bind)服务中获益?

最佳答案

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

服务适用于不需要 UI 的情况。如果您需要实时更新 UI,服务就没有多大意义。

关于java - 下载东西时是绑定(bind)服务还是自定义线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13674476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com