最近,在項目過程中頻繁的使用handler處理一些ui線程上的操作,以及使用handler的postdealy。然而使用過后卻不對handler進行處理,進而產生了內存溢出現象,通過google,發現了解決這一問題的方法。下面貼出項目中的相關代碼
/**********************************以下代碼解決了handler有可能造成的內存泄漏***************************************************/ private class MyHandler extends Handler{ //持有弱引用HandlerActivity,GC回收時會被回收掉. private final WeakReference<ReplyDetailsActivity> mActivty; public MyHandler(ReplyDetailsActivity activity){ mActivty =new WeakReference<ReplyDetailsActivity>(activity); } @Override public void handleMessage(Message msg) { ReplyDetailsActivity activity=mActivty.get(); super.handleMessage(msg); if(activity!=null){ } } } //執行相應的業務邏輯 private final Runnable myRunnable = new Runnable() { @Override public void run() { //執行我們的業務邏輯 if (sumPages>1){ for (int i = 2; i <=sumPages ; i++) { getReplyDetails(String.valueOf(i)); } } } };
在oncreate里面調用
MyHandler mHandler = new MyHandler(this);
mHandler.postDelayed(myRunnable,2000);
這個解決方法的出處在這位大神的博客之中:http://blog.csdn.net/javazejian/article/details/50839443
