相关疑难解决方法(0)

android中的Asynctask vs Thread

在UI中,为了执行一些后台工作,我使用了一个单独的Thread.但正如其他人所说,我现在正在使用AsyncTask.

a Thread和an 之间的主要区别是AsyncTask什么?

在哪种情况下,我应该使用a Thread还是AsyncTask

multithreading android android-asynctask

129
推荐指数
5
解决办法
9万
查看次数

即使活动已经销毁,AsyncTask也不会停止

我有一个AsyncTask对象,它在创建活动时开始执行,并在后台执行操作(下载最多100个图像).一切都很好,但有一种我不能理解的特殊行为.

例如:当Android屏幕的方向发生变化时,活动将被销毁并再次创建.所以我重写onRetainNonConfigurationInstance()方法并保存在AsyncTask中执行的所有下载数据.我这样做的目的是每次在方向更改期间销毁活动时都不会运行AsyncTask,但正如我在日志中可以看到的,之前的AsyncTask仍然在执行.(虽然数据保存正确)

我甚至尝试在活动的onDestroy()方法中取消AsyncTask,但日志仍然显示AsyncTask正在运行.

这是非常奇怪的行为,如果有人能告诉我停止/取消AsyncTask的正确程序,真的很感激.

谢谢

android android-asynctask

72
推荐指数
2
解决办法
7万
查看次数

处理方向更改的最佳做法:Android

我正在通过各种实践来处理线程和AsyncTask的方向更改.我遇到了以下解决方案:

  1. Attach-detach模型:在保留实例的同时为线程和AsyncTask附加和分离活动.(来源:1,2)

  2. 无头片段方式:使用非UI /无头片段执行所有与线程相关的操作,并在配置更改时保留其实例.(来源:1,2)

有没有其他方法来处理这种情况?建议的做法是什么?我问这个是因为我在Android文档的任何地方都找不到通用的解决方案.

multithreading android fragment orientation

33
推荐指数
2
解决办法
1万
查看次数

Android下载多个文件并在ListView中显示进度

我有N个文件要下载.我想在后台连续下载它们 - 一个接一个.我想在ListView中显示进度和状态.所以,ListView看起来像:

File1 ...已下载

文件2 ....下载

File3 ...正在进行中说39%

File4 ......待定

....

Listview定期刷新(比如每2秒),文件很大:50 MB左右.所以他们需要1分钟以上才能下载.

我将文件URL列表传递给AsyncTask并将其下载到后台.问题是如何将进度反馈回ListView.

考虑用户可能会离开ListView页面离开AsyncTask只能返回以查看下载状态.

那么ListView如何"观察"AsyncTask的进度并显示它呢?

我正在考虑添加一组静态变量AsyncTask(使用"Synchronized"块保护它们)并在Fragment中使用显示ListView的定期UI更新程序.所以片段会有这样的东西:

有时间延迟重复一项任务?

是否有设计模式,公共项目或示例代码?

对不起,我不是一张好照片.我所描述的最接近的是这里(类似但我计划使用AsyncTask和串行下载):

图片

android listview android-listview android-asynctask android-fragments

13
推荐指数
2
解决办法
4462
查看次数

Asynctask大量使用

AsyncTask旨在成为Thread和Handler的辅助类,并不构成通用的线程框架.理想情况下,AsyncTasks应该用于短操作(最多几秒钟).

这就是它在文档中所说的内容.

说网络语言,"几秒钟"多长时间?

我的应用程序将执行以下操作,从数据库中获取数组列表,将其发送到服务器,获取另一个列表(json),发送一个好的,它收到列表,解析jsons,在db中插入列表,执行其他一些进程db,更新UI ..(该列表可以达到5000-1000个对象实例条目.)

使用asynctask这样的东西是个好主意吗?我还需要根据服务器响应的结果更新gui.

如果不是,我还有其他选择吗?

android android-asynctask

7
推荐指数
1
解决办法
358
查看次数

AsyncTask的时间超过几秒?

API参考说明,

理想情况下,AsyncTasks应该用于短操作(最多几秒钟).

是否有一个doInBackground的问题,比如,线程池可能耗尽线程30秒?如果这就是原因,如果我确保我的应用程序永远不会有多个如此长时间运行的doInBackground同时执行,它会不会成为一个问题?

android android-asynctask

3
推荐指数
2
解决办法
4622
查看次数