今天看到一段代码,在onDestroy()方法中,使用了下面的代码:
@Override
protected void onDestroy() {
if (handler != null && handler.getLooper() == Looper.getMainLooper()){
handler.removeCallbacksAndMessages(null);
}
super.onDestroy();
}
察看官方文档有以下说明:
http://developer.android.com/reference/android/os/Handler.html#removeCallbacksAndMessages%28java.lang.Object%29
public final void removeCallbacksAndMessages(Object token)
Added in API level 1 Remove any pending posts of callbacks and sent
messages whose obj is token. If token is null, all callbacks and
messages will be removed.
意思是说,如果参数为null的话,会将所有的Callbacks和Messages全部清除掉。
这样做的好处是在Acticity退出的时候,可以避免内存泄露。