亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

APP性能優化之內存優化

難度中級
時長 1小時15分
學習人數
綜合評分9.70
27人評價 查看評價
9.9 內容實用
9.6 簡潔易懂
9.6 邏輯清晰
  • shell命令
    查看全部
  • memory
    查看全部
  • 內存優化的意義: 避免oom 可能存在流暢性,響應速度等方面的問題
    查看全部
  • 避免內存泄漏
    查看全部
  • 數據結構的優化處理
    查看全部
  • 1.內存大戶:圖片
    查看全部
  • 軟引用方法解決圖片與圖片的內存溢出
    查看全部
  • 設置顯示圖片的中心位置
    查看全部
  • 使用DDMS查看內存
    查看全部
  • 查看內存大小的方法
    查看全部
  • OOM問題優化(下) 通過軟引用來優化圖片,使用單例模式 下次使用時先判斷此圖片是否還在,比如是否被回收了,或者第一次加載,就需要重新加載
    查看全部
  • OOM問題優化 1、OOM問題分析 2、強引用、軟引用的意義 3、優化OOM問題的方法 4、代碼演示 1、OOM問題分析 OOM的必然性與可解決性 OOM絕大多數發生在圖片 2、強引用、軟引用的意義 1) 如果強引用,必須主動去回收,否則容易出現OOM 若是軟引用,系統在不用時自動清理掉 private String strongref; private SoftReference<String> softref; strongref = String.valueOf(Math.radom()); //強引用 softref = new SoftReference(String.valueOf(Math.random())); //弱引用 變量的生命周期和其聲明的地方有關,全局和局部,全局的生命周期就是Activity的生命周期,局部就是方法 2)強引用與軟引用的使用場景 強引用只能在生命周期結束才能被回收,除非.recycle() 3、優化OOM問題的方法 1)注意臨時Bitmap對象的及時回收 2)避免Bitmap的浪費 3)Try catch某些大內存分配操作 4)加載Bitmap:縮放比例、解碼格式、局部加載、LRU加載方式 實例: 1)選擇圖片 2)抽樣加載 3)對每個像素的RGB換一下,原來一個像素4個字節,換成2個字節 4)顯示部分,可以手指移動 可以參考 之前的例子 http://www.xianlaiwan.cn/u/1147490/course/489/notes?page=1
    查看全部
  • 筆記五 2、對象復用 1)復用系統自帶的資源 2)ListView/GridView的contentView復用 3) 避免在onDraw方法里面執行對象的創建 3、避免內存泄露 內存泄露:由于代碼瑕疵,導致這塊內存,雖然是停止不用了,但依然被其他東西引用著,使得GC沒法對它進行回收。 1)內存泄露會導致剩余可用Heap越來越少,頻繁出發GC 實例: private class TestThread extends Thread{ @Override public void run(){ super.run(); while(true){ try{ Thread.sleep(1000*60*5); }catch(InterruptedException e){ e.printStackTrace(); } } } } 以上thread是mainActivity的內部類,會導致thread所在的activity無法被GC回收,因為thread實際上引用了activity的資源 優化 private class TestThread extends Thread{ @Override public void run(){ super.run(); try{ Thread.sleep(1000*60*5); }catch(InterruptedException e){ e.printStackTrace(); } } } 2)尤其Activity的泄露 3)用Application Context而不是Activity Context 4)注意Cursor對象是否及時關閉
    查看全部
  • 筆記四 優化: private void do Churn(){ Log.d("suncj", "doChurn start"); String[] strMatrix = new String[length]; //在外面定義 for(int i = 0; i < rowlenght; i ++){ for(int j = 0; j < length; j++){ strMatrix[j]= String.valueOf(ran.nextDouble()); } Log.d("suncj", "doChurn rowStr:"+i); } Log.d("suncj", "doChurn end"); } 4)再小的Class耗費0.5KB 5)HashMap一個entry需要額外占用的32B
    查看全部
  • 筆記三 APP內存優化方法 1、數據結構的優化 2、對象復用 3、避免內存泄露 4、相關演示 1、數據結構的優化 1)頻繁字符串拼接用StringBuilder 字符串通過+的方式進行字符串拼接,會產生中間字符串內存塊,這些都是沒有用的,而且低效,耗時較長 2)ArrayMap、SparseArray替換HashMap 3)內存抖動 變量使用不當引起的 突然的大量申請內存,然后沒多久又棄之不用,過了一段時間,又大量申請內存,像鋸齒一樣的內存使用效果 實例: int rowlength = 10; //10 行 int length = 420000; private void do Churn(){ Log.d("suncj", "doChurn start"); for(int i = 0; i < rowlenght; i ++){ String[] strMatrix = new String[length]; //大量申請內存 for(int j = 0; j < length; j++){ strMatrix[j]= String.valueOf(ran.nextDouble()); } Log.d("suncj", "doChurn rowStr:"+i); } Log.d("suncj", "doChurn end"); }
    查看全部

舉報

0/150
提交
取消
課程須知
最好有一定的android開發基礎,并有做過一些app項目
老師告訴你能學到什么?
老師能讓你知道內存優化的理論,優化的問題,方法等知識

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!