android中handler使用應該注意的問題(解決由handler引起的OOM內存泄漏)


最近,在項目過程中頻繁的使用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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM