转自:Android中使用Handler引发的内存泄露 在Activity中,经常会用到自定义的Handler来处理主线程收到的Message,但是ADT20以后,直接定义的如下定义的内部会有提示说这种使用方法有内存泄漏的风险: private Handler mHandle = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 0: // this is the
开发Android这么久了,总会听到有人说:主线程不能访问网络,子线程不能更新UI.Android的主线程的确不能长时间阻塞,但是子线程为什么不能更新UI呢?今天把这些东西整理,顺便在子线程更新UI. 首先写了一个handler在子线程更新主线程UI,在子线程做了一个耗时操作:从网络下载了一个图片并利用handler发送到handleMessage()的回调中,并更新到主线程的bitmap.图片显示成功,没有问题.接下来在子线程中更新onCreate()中实例化的textview,报错: and
java.lang.RuntimeException: Handler (com.***.behavior.BEvent$1) {421bca80} sending message to a Handler on a dead thread 它告诉你,你往死了的进程发了一个消息,然后没有办法执行. 我的代码错在这里: sHandler.post(runnable); handler虽然不为空,(静态的),但是它所在的进程已经死了(推出了程序),所以你post 就会出现上面的警告.我们看下post