android异常——异步任务导致的窗口句柄泄漏问题

来源:互联网 发布:淘宝水印制作教程 编辑:程序博客网 时间:2024/06/14 09:08

转自http://blog.csdn.net/lonelyroamer/article/details/7536962

在第一界面的Activity中,为了避免程序假死带来的糟糕的用户体验,采用异步任务AsyncTask来访问网络,与服务器进行交互,并用ProgressDialog控件来告知用户当前的程序进度。

原因:存在窗口句柄的泄漏,即未能及时的销毁某个PhoneWindow. 

为什么会出现这样的情况,因为,在异步任务里面已经发生了严重的错误,而导致Activity的强制关闭。Activity强制关闭了,可是ProgressDialog并没有dismiss()掉,所以出现了

窗口句柄的泄漏。 而且,更严重的是,这个异常会覆盖我们在AsyncTask里面发生的真正异常,这往往会误导我们,把过多的精力放在查找所谓的内存泄漏的上面,而不是查找AsyncTask中出现的错误。


本解决方法并不能真正的解决问题,但是在一定程度上可以将真正导致错误的异常信息显露出来。即重写Activity的onDestory()方法,在该方法中调用dismiss()来解除对ProgressDialog的引用。


0 0
原创粉丝点击