网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
07月24日漏签0天
aide吧 关注:33,054贴子:273,022
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 1 2 下一页 尾页
  • 47回复贴,共2页
  • ,跳到 页  
<<返回aide吧
>0< 加载中...

[抛砖]粗糙的实现了AlertDialog异步加载数据

  • 只看楼主
  • 收藏

  • 回复
  • 九方观夜
  • 英雄豪杰
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
(本来想写个延时加载当标题,然后觉得还是异步加载有逼格)
如题,可以用在类似如图的场合,setView 时读取数据耗时较长,如果不异步加载就会导致按钮点击老半天没反应,我个人觉得这是比较蛋疼的。


  • 九方观夜
  • 英雄豪杰
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我觉得实现的还相当烂,确实也是相当烂,刚刚不知道为什么我的对话框跑不起来了,Logcat 上说是因为〔非UI线程不允许对WebView 〕操作……
我嘞个XXXXXX,如果是为了安全TM不会另提供个SafeWebView 或者给WebView 加个boolean useSafeMode!!!??
A~~谷歌编程也招临时工了?
当然可能是因为别的问题,因为一开始是可用的,AIDE升到2.8.1 我重编译了一下第一次运行也是OK


2025-07-24 01:10:35
广告
不感兴趣
开通SVIP免广告
  • 九方观夜
  • 英雄豪杰
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
来讲讲用法吧,非常简单,大概类似如图


  • 九方观夜
  • 英雄豪杰
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
实现LazyDialog 内的ViewNurse 里面有个abstract loadViewData 方法,通过ViewNurse 的getPatient 方法得到请求数据的LazyDialog 对象,在loadViewData 内通过dialog 的findViewById 方法得到需要需要设置的View 对象,然后就加载数据。


  • 九方观夜
  • 英雄豪杰
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
创建时要调用使用Builder2对象,Builder 对象出来的只是个AlertDialog。


  • 九方观夜
  • 英雄豪杰
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
使用Builder2 的setViewNurse 设置你实现了的ViewNurse,不要忘记setView ,这时setView 就不用把所有数据一通加入了,比如,ListView 的Adapter 你就可以放到ViewNurse 里去设置。


  • 九方观夜
  • 英雄豪杰
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这是实现ViewNurse 后,Dialog 已显示数据WebView 数据没有加载时的样子


  • 九方观夜
  • 英雄豪杰
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
等一会后台线程执行loadViewData结束后就会变成一楼那幅图的样子


2025-07-24 01:04:35
广告
不感兴趣
开通SVIP免广告
  • 九方观夜
  • 英雄豪杰
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
为了不让用户误会死机了,可以给布局文件里加一个ProgressBar,初始时显示,WebView设置完成后在loadViewData 里setVisibility(View.GONE)就能隐藏掉它,然后WebView 就出来了


  • 九方观夜
  • 英雄豪杰
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
加了ProgressBar 后的初始效果


  • 九方观夜
  • 英雄豪杰
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
但WebView loadData 结束和它能显示出来之间还有一段时差,所以会出现ProgressBar 消失而WebView 还要等一会才出现的情况


  • 九方观夜
  • 英雄豪杰
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
A~~忘了说调用链了,其实源码里一看就能清楚。


  • 九方观夜
  • 英雄豪杰
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
(其实Dialog 的onStart方法是它的show方法调用的……isShowing 也是show 的时候设置为true.)


  • 九方观夜
  • 英雄豪杰
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
调用链:
设置ViewNurse 后,当外部调用LazyDialog 的show 时……
show -> ViewNurse.prepare(LazyDialog) -> ViewNurse.start() -> ViewNurse.loadViewData() ( run() )


2025-07-24 00:58:35
广告
不感兴趣
开通SVIP免广告
  • 九方观夜
  • 英雄豪杰
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
ViewNurse 继承了Thread ,它调用prepare 时,它将传入的参数视为需要饥渴的LazyDialog,启动新线程,由新线程调用实现了的loadViewData 方法,在loadViewData 内调用getPatientDialog 获得prepare 时传入的LazyDialog对象,调用LazyDialog 的findViewById方法获得饥渴的View 对象,然后设置View 的数据,比如,对于ListView 来说这一步应该是为它添加Adapter, 某些时候还要调用View 的invalidate 方法显示新的数据,然后就OK了,其他效果要在布局文件里实现


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 下一页 尾页
  • 47回复贴,共2页
  • ,跳到 页  
<<返回aide吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示