2016-03-06 74 views
-1

嗨,我一直在做一個項目從學校,當我跑我的應用程序我有堆棧跟蹤錯誤如下所示。出內存錯誤

03-06 14:58:02.520 11265-11265/com.example.ray.cdmsv2 E/AndroidRuntime: FATAL EXCEPTION: main 
                     java.lang.OutOfMemoryError 
                      at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
                      at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:596) 
                      at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444) 
                      at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:832) 
                      at android.content.res.Resources.loadDrawable(Resources.java:2988) 
                      at android.content.res.Resources.getDrawable(Resources.java:1558) 
                      at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:173) 
                      at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:937) 
                      at android.graphics.drawable.Drawable.createFromXml(Drawable.java:873) 
                      at android.content.res.Resources.loadDrawable(Resources.java:2970) 
                      at android.content.res.Resources.getDrawable(Resources.java:1558) 
                      at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:323) 
                      at android.support.v7.widget.TintManager.getDrawable(TintManager.java:147) 
                      at android.support.design.widget.TabLayout$Tab.setIcon(TabLayout.java:1080) 
                      at com.example.ray.cdmsv2.Activities.CreateTaskActivity.onCreate(CreateTaskActivity.java:102) 
                      at android.app.Activity.performCreate(Activity.java:5372) 
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104) 
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270) 
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2362) 
                      at android.app.ActivityThread.access$700(ActivityThread.java:168) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1329) 
                      at android.os.Handler.dispatchMessage(Handler.java:99) 
                      at android.os.Looper.loop(Looper.java:137) 
                      at android.app.ActivityThread.main(ActivityThread.java:5493) 
                      at java.lang.reflect.Method.invokeNative(Native Method) 
                      at java.lang.reflect.Method.invoke(Method.java:525) 

我已經四處尋找解決方案,但我仍然無法解決問題。我的應用程序能夠在Samsung Galaxy A3上流暢運行。但是,當我試圖運行我的應用程序在S4和注4我收到內存不足的錯誤。我已經意識到,當我在我的XML文件中調用我的drawable中實現某個選擇器時,它會導致錯誤,但是當我刪除它時,錯誤不再發生。這個問題有沒有解釋?非常感謝您的幫助我

+0

你可能沒有有效地使用內存。不同的設備具有不同的規格,您應該嘗試調整您使用的內存量與您主動提供多少內存有關。 – JoxTraex

+0

壓縮您正在使用的圖像的大小。很簡單!!!或者更喜歡使用矢量。檢查materialdesignicons.com – Sibidharan

+0

檢查您的圖像尺寸,儘量減少尺寸 – Pooya

回答

0

刪除drawable並使用ImageAsset選項再次導入它。

錯誤是您的圖像太重,無法將其加載到內存中。或者在將圖像複製到Drawable文件夾之前更好地壓縮圖像。

0

我會通過在開發文檔通過谷歌學習內存使用的一些最佳做法@ http://developer.android.com/training/displaying-bitmaps/index.html

如果你正在裝載大位圖,它很可能可用的堆內存開始是不夠的,你的位圖。

+0

僅供參考。此答案現在處於低質量隊列中;我猜這是NAA被某個人誤認爲是鏈接專用的答案。我認爲稍微詳細說明一下內存使用情況是很好的。 –

0

你的應用被Android窒息,因爲它使用的內存多於分配的內存,主要是由於大圖像文件被用作drawable。

如果是圖標,請使用Android Studio內置的Image Asset Generator爲每種顯示類型(mdpi,hdpi,xhdpi,xxhdpi等)生成適當的圖像大小。如果它是在ImageView上加載的圖像,那麼可以嘗試使用將自己處理位圖內存的Picasso庫。