首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在我的MainActivity中运行几个异步任务

在我的MainActivity中运行几个异步任务
EN

Stack Overflow用户
提问于 2013-02-07 18:51:07
回答 2查看 120关注 0票数 0

我按照谷歌的指示在我的MainActivity中显示了5个大的位图,以避免内存泄漏和不冻结UI线程。

http://developer.android.com/training/displaying-bitmaps/process-bitmap.html

因此,我在onCreate方法中为我的5个大位图中的每一个启动了一个Asynctask

我没有冻结UI线程(很好),因为我在每个线程中运行我的长进程,但“我的问题”是,这5个大的位图是同一图形(面部)的一部分,当应用程序启动时,用户可以看到不同的层是如何在不同的时间加载的。

我在启动画面中思考,直到我的图像被加载,但我想知道这是最好的方法(因为启动可能不到1秒),还是有更好的方法,比如在最后一个图像加载时通知UI线程,然后显示所有images...or可能尝试加载同一Asynctask中的所有图像

提前谢谢你,

宝拉。

EN

回答 2

Stack Overflow用户

发布于 2013-02-08 07:02:03

最后,我在同一个Asynctask中加载了5个大的位图。我已经将它们加载到doInBackground方法中,并在我的ASynctask的onPostExecute中一次显示所有它们。

我在想Siddharth Lele的答案,我想要这样的东西,但我知道你得到了相同的结果,从另一个异步任务的onPostExecute调用一个异步任务,并等待到最后一个异步任务来显示在doInBackground方法中执行的ImageViews唯一的一个异步任务,并等待这个异步任务的postExecute,直到所有的位图都加载完,我认为它更有效率,因为你没有更多的线程来满足你的需要……

如果这种方法还有其他考虑因素,请让我知道。

谢谢!

票数 0
EN

Stack Overflow用户

发布于 2013-02-08 07:59:19

在最近的Android版本中,在AsyncTask执行器线程池前面有一个出队。它一次只允许运行一个任务。这意味着您的任务按顺序执行,这通常是您所期望的。然而,在这样的情况下,这意味着您不能同时加载所有5个图像。看一看:

代码语言:javascript
复制
executeOnExecutor(Executor exec, Params... params)

..。这使您可以绕过出队。这将使您获得并发性。

在我看来,来自AsyncTasks的网络连接似乎是可疑的。如果其中一个失败了怎么办?这个问题的一个更好的解决方案可能是一个多线程的绑定服务,当所有5个图像都下载完毕时,它会进行回调。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14749309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档