您的位置:首页 > 移动开发 > Android开发

从Android AlertDialog的显示理解 run() 和 start() 的使用

2015-06-08 15:54 417 查看
今天安卓应用中完善一个查询功能,要达到的效果是点击“查询”按钮之后,先弹出“正在查询”的提示框,然后启动一个线程查询数据,待查询完成之后发送message通知关闭提示框。

原来的代码如下:

alertDialog.show();

queryThread = new QueryThread();
queryThread.start();
queryThread.run();


关于线程,先调用start(), 然后调用run(),当然,这是脑子里想当然的做法。

实际效果是对话框没有弹出来,可是为什么对话框不弹出来?代码看上去简单得不能再简单了。

线程里面的方法再怎么改都弹不出来,观察控制台,发现这个查询查出来的记录好像太多了,原来是查了两遍!到这里,似乎有点眉目了,就从这个查了两遍入手。

查了两遍,说明是查询的方法调用了两次,但是观察run方法里,就是写了一次查询而已。那么查了两次的原因很可能就是分别调用了start()和run()这两个方法了!

然后换个思路,把run()的调用去掉了,结果对话框正常地弹出来了,并且在查询结束之后也正常关闭了。

alertDialog.show();

queryThread = new QueryThread();
queryThread.start();
//queryThread.run();


总算在实践中体会到了run和start的区别了:

要让线程启动执行任务,只要调用start()就可以了。如果显式调用了run(),那么其实效果就是普通调用,并没有启动线程,相当于又执行了一次任务。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: