比方用户在进入一个页面,这个页面是listview的形式。显示的内容是重网上获取的数据,在获取完数据之前显示dialog提示正在下载,怎么搞?
解决方案 »
- 跪求各位大牛帮忙解决!!!!!
- android系统默认浏览器中点击视频链接,打开播放器播放,如何实现?
- 如何使用android开发网站的移动客户端?(高分求资料和方法)
- 求助,关于动态添加删除TableRow
- 如何 动态更改 Dialog 按钮内容?
- 在安卓下用c语言,来执行adb shell,生成so文件释放接口给上层
- 请问为什么getMainLooper和主线程通信失败
- android按比例布局如何实现
- 怎样判断当前Activity里面装的Fragment是哪个
- 求教:java.lang.IllegalStateException: Could not execute method of the activity
- android 下载网络图片报错的问题
- 【求助】 多任务下载的实现
这个activity初始化的时候,做两件事情
1.显示一个dialog,提示正在下载
2.开启一个线程,从网络上获取数据
等到数据获取完后,可用handler传递消息,dismiss() dialog、show listview
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
listView = new ListView(this);
Mydialog.show();
getData();
// 利用系统的layout显示一项
listView.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, data));
setContentView(listView);
Mydialog.dismiss();
}但是没有显示diaog 中间显示的是黑屏一段时间,说明正在下载。。我把dismiss去掉后,发现dialog是在获取完数据才显示的。这个怎么回事?谢谢。
android的UI组件是非线程安全,对这种单线程模式,切记两件事:
1.不要阻塞GUI主线程
2.不要跨线程操作GUI线程的组件
所以onCreate()方法中的程序不能有耗时过长的操作,以免阻塞GUI。如果有这种操作,建议新开线程完成这些操作,然后通过Handler在线程之间通信。
所以dialog并不是在获取完数据才显示的,而是你的getData()操作阻塞你的GUI主线程
强烈建议把getData()放入一个线程之中
在Activity中new出来List,然后加上数据,再用AlertDialog.Builder .setView进去,
2.new THread (弄listview的数据 , sendMessage)
3.handlemessage(适配器刷一下 ,closeProgress)
提示一下,thread里面不能new Handler哟