2016-04-26 69 views
-4

当我尝试移动到我的android应用程序中的地图活动时出现以下错误。我尝试了很多不同的方法来解决它,通过阅读其他类似的问题,但我无法修复它。如果有人可以请帮忙,谢谢。无法分配105949236字节分配,16777120空闲字节和40MB,直到OOM

这是我收到的日志文件中的错误。

FATAL EXCEPTION: main 
Process: com.example.neil.studicom, PID: 30587 
java.lang.OutOfMemoryError: Failed to allocate a 105949236 byte allocation with 16777120 free bytes and 40MB until OOM 
    at dalvik.system.VMRuntime.newNonMovableArray(Native Method) 
    at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
    at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:726) 
    at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:547) 
    at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:575) 
    at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:605) 
    at com.example.neil.studicom.MapsActivity.resizeMapIcons(MapsActivity.java:42) 
    at com.example.neil.studicom.MapsActivity.onMapReady(MapsActivity.java:53) 
    at com.google.android.gms.maps.SupportMapFragment$zza$1.zza(Unknown Source) 
    at com.google.android.gms.maps.internal.zzo$zza.onTransact(Unknown Source) 
    at android.os.Binder.transact(Binder.java:380) 
    at com.google.android.gms.maps.internal.v$a$a.a(:com.google.android.gms.alldynamite:82) 
    at maps.ei.bu$6.run(Unknown Source) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:145) 
    at android.app.ActivityThread.main(ActivityThread.java:5951) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195) 

摇篮文件:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 

    /* dexOptions { 
     javaMaxHeapSize "4g" 
    }*/ 

    defaultConfig { 
     applicationId "com.example.neil.studicom" 
     minSdkVersion 15 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
     multiDexEnabled true 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    /*compile 'org.apache.httpcomponents:httpmime:4.5.1'*/ 
    compile 'com.android.support:appcompat-v7:23.2.1' 
    compile 'com.microsoft.azure:azure-mobile-services-android-sdk:2.0.3' 
    compile 'com.google.android.gms:play-services:8.4.0' 
    compile 'com.android.support:multidex:1.0.0' 
    compile 'com.android.support:design:23.2.1' 
    compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2' 
    compile 'com.google.code.gson:gson:2.3' 
} 
+1

发布你build.gradle文件 – Sanoop

+0

可能是因为你使用的是所有的google服务..只使用你需要的..也启用大堆 – Sanoop

+0

我发布了我的gradle文件,谢谢。 – Dom

回答

2

resizeMapIcons()方法试图使用decodeResource() ,并且正在触发105949236字节的分配。那是〜100MB。它相当于5146px×5146px的图像。没有Android 屏幕就是那个尺寸;你当然不需要图标那很大。

您需要查找此资源并大幅度降低其分辨率。

+0

谢谢你的帮助。错误的图像已被使用。 – Dom

+0

sqrt(105949236/4)= 5146px(4来自每个rgba通道1个字节) –

0

删除此

compile 'com.google.android.gms:play-services:8.4.0' 

,并添加

compile 'com.google.android.gms:play-services-maps:8.4.0' 
compile 'com.google.android.gms:play-services-location:8.4.0' 

,并在您gradle这个

dexOptions { 
    //incremental true 
    javaMaxHeapSize "2048M" 
} 

这是因为该服务包含了所有你可能不会需要为project..So库使用什么你到底需要

还提到this

+0

gradle部分是否必要? – Nfear

+0

不..但其预防步骤.. – Sanoop

+0

我已经按照这些步骤,没有任何改变不幸。 – Dom

相关问题