问题描述
- Android 更新UI 耗时问题
-
假如现在我得到了某个List,里面有1000个字符串,然后我想我在主线程中按下某个Button之后,把它们都动态地加载到UI上来,完全是用代码动态添加的布局,然后执行的时候发现有点耗时。
现在有两个问题:
1.有没有什么机制可以让它加载地更快,因为发现更新UI的语句只能在主线程执行,但是耗时的本身就是这些语句
2.如果一定得耗时,我想在加载的时候显示一个progressDialog,更新UI语句全在主线程一个foreach()循环里,我在foreach前showDialog,在foreach后dismiss,发现似乎是没有效果,网上查到的使用方法都是子线程里发消息通知耗时操作完成了,我这种情况的话应该怎么办
解决方案
我在Activity中开了一个后台线程,负责获取数据,每个10秒通过Handler通知Activity的TextView显示(setText())。
问题是当我按back键的时候,Activity会finish掉。再次启动时,依然能或得到线程发来的数据,但是却无法更新UI(setText()不更新)。如果按home键则没有问题,因为Activity不会finish掉。
请高手指教啊!!......
答案就在这里:android 关于更新UI的问题
解决方案二:
主线程里面不能放置耗时的程序,必须开子线程,通过handler告知主线程更新
解决方案三:
开子线程执行耗时操作
解决方案四:
你开一个AsyncTask异步任务,主要复写三个接口,onPre... doinBackground, onPost...
这三个除了中间的一个是在子线程里运行,其余都是在ui线程,你只要在onPre...那里显示进度条,然后在doinback...里处理费时操作,然后在onpost...里取消显示进度条并更新ui就行
解决方案五:
UIThread里不能有耗时操作,必须开Thread
时间: 2024-10-26 08:14:23