今天看到一段代碼,在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退出的時候,可以避免內存泄露。