java.lang.RuntimeException: Handler (com.***.behavior.BEvent$1) {421bca80} sending message to a Handler on a dead thread
它告诉你,你往死了的进程发了一个消息,然后没有办法执行。
我的代码错在这里:
sHandler.post(runnable);
handler虽然不为空,(静态的),但是它所在的进程已经死了(推出了程序),所以你post 就会出现上面的警告。我们看下post源码:
/**
* Causes the Runnable r to be added to the message queue.
* The runnable will be run on the thread to which this handler is
* attached.
*
* @param r The Runnable that will be executed.
*
* @return Returns true if the Runnable was successfully placed in to the
* message queue. Returns false on failure, usually because the
* looper processing the message queue is exiting.
*/
public final boolean post(Runnable r)
{
return sendMessageDelayed(getPostMessage(r), 0);
}
The runnable will be run on the thread to which this handler is
* attached.
所以 进程死了,就没有办法运行了。
总结:
1.代码没执行,记得看logcat的警告。
logcat的error,会直接crash.
warn 代码没执行,或者其他的问题,都会warn.
2.android程序退出了,但是进程没有杀死。
所有的静态变量,暂时还保存着。