一般有两种情况:
一种是:也是绝大多数情况 MySQL服务在长时间不连接之后断开了,断开之后的首次请求会抛出这个异常,java的线程池还保有引用。
这时候就需要在mysql中修改wait_timeout的值
set global wait_timeout = 604800; //设置等待时间为一周 7x24x60x60
再重启mysql服务即可
第二种情况: 是由于连接数据库时没有放在线程里,而Android是不赞成在主线程中进行耗时操作的
当发现报Communications link failure错时,也以为是前面那种情况,但是搜遍教程都不行,后来检查才发现是耗时操作问题
但是开启线程获取数据时,是不允许在子线程中更新UI的,因此无法将获取的数据显示到控件上。
这是就需要用到异步了,教程参考小猪的AnsyncTask异步任务教程
http://www.runoob.com/w3cnote/android-tutorial-ansynctask.html 或者 第一行代码第2版