在Android AsyncTask的onPostExecute更新ListView的适配器的话会导致fragment切换时变得很卡 110

我是使用ViewPage+Fragment,Fragemnt布局里有ListView,在异步类AsyncTask里更新ListView的适配器adapter.notify... 我是使用ViewPage+Fragment,Fragemnt布局里有ListView,在异步类AsyncTask里更新ListView的适配器adapter.notifyDataSetChanged();
onPostExecute
方法里只要有运行过一次adapter.notifyDataSetChanged();
就会卡,不知道什么原因。
展开
 我来答
www..com……
2014-09-24 · TA获得超过2385个赞
知道小有建树答主
回答量:869
采纳率:75%
帮助的人:446万
展开全部
首先来看一下AsyncTask的基本用法,由于AsyncTask是一个抽象类,所以如果我们想使用它,就必须要创建一个子类去继承它。在继承时我们可以为AsyncTask类指定三个泛型参数,这三个参数的用途如下:http://www.ijiami.cn/newsInfo?id=291&v=3

1. Params

在执行AsyncTask时需要传入的参数,可用于在后台任务中使用。
2. Progress

后台任何执行时,如果需要在界面上显示当前的进度,则使用这里指定的泛型作为进度单位。
3. Result

当任务执行完毕后,如果需要对结果进行返回,则使用这里指定的泛型作为返回值类型。
追问
这个我比你更清楚....
百度网友8ce6bb9567
2014-09-18 · TA获得超过166个赞
知道答主
回答量:69
采纳率:0%
帮助的人:44.1万
展开全部
在onPostExecute里面不要直接写刷新适配的adapter.notifyDataSetChanged(),一般把刷新适配提出来。在真正的主线程写一个方法。将异步返回的数据传入主线程。在这个方法里面刷新适配器。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
QQMSD8
2014-09-18 · 知道合伙人软件行家
QQMSD8
知道合伙人软件行家
采纳数:6788 获赞数:13239
没有做不到,只有想不到,帮助别人的同时也是对自己的提升

向TA提问 私信TA
展开全部
onPostExecute是主线程在执行的,跟onPostExecute没关系吧
你切换fragment的时候,是不是去加载listView了
如果你每次切换都去加载,估计会卡
优化你的ListView吧,用缓存
追问
切换时并没有再次加载listView,而且适配器已经做了优化。适配器更新所用的时间<0.001秒,onPost方法里注释掉adapter.notifyDataSetChanged();就能正常响应
追答
尽量不要使用AsyncTask

AsyncTask用了线程池,包装了Thread + handler
还不如直接用Thread + handler

有handler好了,你在onPostExecute给handler发个消息,让主线程去刷新

AsyncTask开消太大了,很影响性能的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
学会包容如海
2014-09-18
知道答主
回答量:5
采纳率:0%
帮助的人:6788
展开全部
更新UI最好放在主线程吧,在类里写个更新UI的方法,然后在接到异步任务完成的信息后在更新
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式