2016-12-16 58 views
1

實際上,我嘗試創建一個包含n個包含圖像和視頻的多媒體文件的應用程序。我的應用程序大小約爲34MB,我的資產大小約爲60mb。當我在普通設備中加載應用程序時,我們沒有遇到任何問題,但是具有2K resolutions(例如Nexus 6P, HTC, LG等)的設備,應用程序在進程中間出現「內存不足」錯誤。 我用這個產生了錯誤報告。我也試圖位圖工廠。 同時我在數組方法中使用視頻。java.lang.OutOfMemoryError:在OOM之前無法分配分配

任何人都可以幫助解決這個問題嗎?

FATAL EXCEPTION: main Process: com.example.we.appname, PID: 9353

java.lang.OutOfMemoryError: Failed to allocate a 1660396 byte allocation with 1243880 free bytes and 1214KB until OOM at dalvik.system.VMRuntime.newNonMovableArray(Native Method) at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:620) at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:455) at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1155) at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:720) at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571) at android.content.res.Resources.loadDrawable(Resources.java:858) at android.content.res.TypedArray.getDrawable(TypedArray.java:928) at android.graphics.drawable.AnimationDrawable.inflateChildElements(AnimationDrawable.java:327) at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:297) at android.graphics.drawable.DrawableInflater.inflateFromXml(DrawableInflater.java:130) at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1227) at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1200) at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:715) at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571) at android.content.res.Resources.getDrawable(Resources.java:771) at android.content.Context.getDrawable(Context.java:525) at android.view.View.setBackgroundResource(View.java:18228) at com.example.kq.meettheshps.Score_Card.onCreate(Score_Card.java:58) at android.app.Activity.performCreate(Activity.java:6679) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

+0

你必須根據scren大小有效地加載你的位圖..看到這個https://developer.android.com/training/displaying-bitmaps/load-bitmap.html – rafsanahmad007

回答

4

簡單的解決方案,我發現是, 添加hardwareAccelerated & largeHeapapplicationAndroidManifest.xml

<application 
    android:allowBackup="true" 
    android:hardwareAccelerated="false" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:largeHeap="true" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
1

這聽起來像你要麼緩存在內存中有太多的文件或一遍遍實例相同的位圖和視頻,直到你耗盡內存。

除非您有特殊要求,否則2016年不應在Android上編寫自己的圖像加載和緩存代碼。使用解決此問題的庫之一。有關更多指導,請參閱Picasso v/s Imageloader v/s Fresco vs Glide

0

這是因爲大尺寸圖像發生。嘗試使用小尺寸圖像,即手機屏幕分辨率。

我有同樣的問題。嘗試減少2100 x 1300像素的Paint中的圖像大小,它的工作,但應用程序非常滯後。

0

這是當你與位圖處理,從而在AndroidManifest.xml中加入這一行一個常見的錯誤: 機器人:largeHeap =「真」

<application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:largeHeap="true" 
     android:hardwareAccelerated="false" 
     android:label="@string/app_name" 
     android:roundIcon="@mipmap/ic_launcher_round" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme.NoActionBar"> 

希望這會有所幫助。

相關問題