Android學習筆記--使用Universal-Image-Loaderf發生OOM到解決OOM問題

來源:互聯網
上載者:User

標籤:exit   方法   nbsp   span   edit   print   options   rri   lru   

這裡要引用一篇文章,http://blog.csdn.net/editor1994/article/details/50394560 非常不錯的一篇分析OOM問題

項目中載入了大量的圖片使用完之後沒有被釋放,從而導致記憶體泄露,直到OOM,後來我使用上面文章使用到的方法發現是有效果,但是在一個介面多次頻繁還是會出,於是萬般無奈之下只能換了Glide圖片載入架構,

自訂了一個GlideModule,

 

 1 /** 2  * Created by admin on 2017/4/7. 3  */ 4  5 public class GlideDemo implements GlideModule { 6     @Override 7     public void applyOptions(Context context, GlideBuilder builder) { 8         builder.setMemoryCache(new LruResourceCache(2*1024*1024)); 9         builder.setBitmapPool(new LruBitmapPool(2*1024*1024));10     }11 12     @Override13     public void registerComponents(Context context, Glide glide) {14 15     }16 }

載入圖片時候的代碼

1     Glide.with(lYActivity.this)2                 .load(arrayList.get(position).getBigimg())3                 .error(R.drawable.mimg)4                 .skipMemoryCache(false)5                 .diskCacheStrategy(DiskCacheStrategy.ALL)6                 .into(mImage);

 

目前問題算是解決了,後續在補充,還有啟動一個Server,即時監聽記憶體的使用方式,如果記憶體快要超出指定的記憶體,強制返回首頁並且釋放資源

 

 

監聽記憶體的Service代碼

 1        timer = new Timer(); 2         timerTask = new TimerTask() { 3             @Override 4             public void run() { 5                 //應用程式最大可用記憶體 6                 int maxMemory = ((int) Runtime.getRuntime().maxMemory())/1024/1024; 7                 //應用程式已獲得記憶體 8                 long totalMemory = ((int) Runtime.getRuntime().totalMemory())/1024/1024; 9                 //應用程式已獲得記憶體中未使用記憶體10                 long freeMemory = ((int) Runtime.getRuntime().freeMemory())/1024/1024;11                 Sysout.println("我---> 應用記憶體="+maxMemory+"M,以及使用的="+totalMemory+"M,剩下的="+freeMemory+"M");12                 if(totalMemory > 58){13                    // Toast.makeText(NeiCunService.this, "程式異常,正在重啟,請稍後", Toast.LENGTH_SHORT).show();14                     context.sendBroadcast(new Intent("com.zhushiyun.oom"));15                    // System.exit(0);16                     //timer.cancel();17                 }18             }19         };20         timer.schedule(timerTask,1000,5000);21         Sysout.println("我是監控內容的我已經啟動");

 

Android學習筆記--使用Universal-Image-Loaderf發生OOM到解決OOM問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.