Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何克服java.lang.OutOfMemoryError:图像文件在XML代码中未在活动中使用。仅在某些设备中获取错误_Java_Android_Xml_Android Studio_Android Bitmap - Fatal编程技术网

如何克服java.lang.OutOfMemoryError:图像文件在XML代码中未在活动中使用。仅在某些设备中获取错误

如何克服java.lang.OutOfMemoryError:图像文件在XML代码中未在活动中使用。仅在某些设备中获取错误,java,android,xml,android-studio,android-bitmap,Java,Android,Xml,Android Studio,Android Bitmap,java.lang.OutOfMemoryError:无法分配253513236字节的分配,该分配包含16774816个可用字节和163MB的内存 大家好,我是新来的,我正在用android开发一款游戏,其中我使用图像作为开始按钮、背景、如何玩按钮以及一些活动图像。然而,到目前为止,我将图像大小从800kbs减小到35kb85kb,但是遇到了这个错误。到目前为止,我在互联网上搜索了这个错误,我得到了很多解决方案,但没有得到确切的答案。 这是我的日志 E/AndroidRuntime: FATAL

java.lang.OutOfMemoryError:无法分配253513236字节的分配,该分配包含16774816个可用字节和163MB的内存

大家好,我是新来的,我正在用android开发一款游戏,其中我使用图像作为开始按钮、背景、如何玩按钮以及一些活动图像。然而,到目前为止,我将图像大小从800kbs减小到35kb85kb,但是遇到了这个错误。到目前为止,我在互联网上搜索了这个错误,我得到了很多解决方案,但没有得到确切的答案。 这是我的日志

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.vikaskonaparthi.game, PID: 23126
java.lang.OutOfMemoryError: Failed to allocate a 253513236 byte allocation with 16774816 free bytes 
and 163MB until OOM
    at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
    at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
    at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:613)
    at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:446)
    at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1080)
    at android.content.res.Resources.createFromResourceStream(Resources.java:2952)
    at android.content.res.Resources.loadDrawableForCookie(Resources.java:2684)
    at android.content.res.Resources.loadDrawable(Resources.java:2580)
    at android.content.res.MiuiResources.loadDrawable(MiuiResources.java:398)
    at android.content.res.TypedArray.getDrawable(TypedArray.java:872)
    at android.widget.ImageView.<init>(ImageView.java:152)
    at android.widget.ImageView.<init>(ImageView.java:140)
    at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:72)
    at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:68)
    at android.support.v7.app.AppCompatViewInflater.createImageView(AppCompatViewInflater.java:182)
    at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:106)
    at android.support.v7.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1266)
    at android.support.v7.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1316)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:708)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:839)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:802)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:842)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:802)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:842)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:802)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:519)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:427)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
    at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
    at com.vikaskonaparthi.game.Start.onCreate(Start.java:37)
    at android.app.Activity.performCreate(Activity.java:6355)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2440)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2547)
    at android.app.ActivityThread.access$1100(ActivityThread.java:151)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1398)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:157)
    at android.app.ActivityThread.main(ActivityThread.java:5603)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:774)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652)
这是XML文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Start"
android:gravity="bottom|center"
android:background="@drawable/b1"
android:weightSum="12">
<ImageView
    android:id="@+id/pac"
    android:layout_width="200dp"
    android:layout_height="60dp"
    android:src="@drawable/logo"
    android:layout_gravity="center"/>
<TableLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp">
    <TableRow
        android:gravity="center_vertical">
        <ImageView
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:src="@drawable/strawberry"/>
    </TableRow>
</TableLayout>
<TableLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp">
    <TableRow
        android:gravity="center_vertical">
        <ImageView
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:src="@drawable/cherries"/>
    </TableRow>

</TableLayout>
<TableLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp">
    <TableRow
        android:gravity="center_vertical">
        <pl.droidsonroids.gif.GifImageView
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:src="@drawable/ene"/>
    </TableRow>

</TableLayout>
<TableLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp">
    <TableRow
        android:gravity="center_vertical">
        <pl.droidsonroids.gif.GifImageView
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:src="@drawable/ene2"/>
    </TableRow>

</TableLayout>

<Button
    android:id="@+id/start"
    android:layout_width="120dp"
    android:layout_height="80dp"
    android:layout_marginTop="100dp"
    android:onClick="startGame"
    android:background="@drawable/custom_start"
    android:layout_marginBottom="100dp"/>
<Button
    android:id="@+id/About"
    android:layout_width="80dp"
    android:layout_height="60dp"
    android:layout_marginTop="-100dp"
    android:onClick="aboutGame"
    android:background="@drawable/custom_about"
    android:layout_marginBottom="100dp"/>

<com.google.android.gms.ads.AdView
    android:id="@+id/adView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_gravity="bottom|center"
    app:adSize="BANNER"
    app:adUnitId="" />


</LinearLayout>

如果有任何帮助,我们将不胜感激。我将在一周多的时间里努力解决这个问题


我不知道我现在该怎么办我被这件事缠住了。但三星和诺基亚在9和10版本上运行的设备并没有出现这个错误,只是在Mi和维梧设备上出现了一个错误,我认为它们在android 9版本以下运行。任何帮助都将不胜感激。因为这是一个游戏,如果我在清单中使用large_heap=true使移动速度减慢。

它试图分配250MB的ram,因此可能不是图片本身。您必须在某个地方的循环中加载图像或其他数据。例如,反复创建大量位图。如果是这种情况,您应该尝试重用现有位图,而不是创建新的位图。请进一步阅读如何管理位图。我也遇到了同样的问题,因为:*我使用了高结果图像(比需要的像素更多)示例:16位颜色的512x256像素图像在显示时需要大约250 MB的未压缩图像,即使压缩的jpg文件要小得多*在适配器类中,我通过代码加载图像,而不释放以前的图像。如果没有看到代码,就不可能解决您的问题。有完整的代码。到目前为止,我发现错误是由我在这个游戏中使用的gif图像引起的。pl.droidsonroids.gif.GifImageView我至少现在可以有解决方案了。它正在尝试分配250MB的ram,所以可能不是图片本身。您必须在某个地方的循环中加载图像或其他数据。例如,反复创建大量位图。如果是这种情况,您应该尝试重用现有位图,而不是创建新的位图。请进一步阅读如何管理位图。我也遇到了同样的问题,因为:*我使用了高结果图像(比需要的像素更多)示例:16位颜色的512x256像素图像在显示时需要大约250 MB的未压缩图像,即使压缩的jpg文件要小得多*在适配器类中,我通过代码加载图像,而不释放以前的图像。如果没有看到代码,就不可能解决您的问题。有完整的代码。到目前为止,我发现错误是由我在这个游戏中使用的gif图像引起的。pl.droidsonroids.gif.GifImageView我至少现在可以得到解决方案。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Start"
android:gravity="bottom|center"
android:background="@drawable/b1"
android:weightSum="12">
<ImageView
    android:id="@+id/pac"
    android:layout_width="200dp"
    android:layout_height="60dp"
    android:src="@drawable/logo"
    android:layout_gravity="center"/>
<TableLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp">
    <TableRow
        android:gravity="center_vertical">
        <ImageView
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:src="@drawable/strawberry"/>
    </TableRow>
</TableLayout>
<TableLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp">
    <TableRow
        android:gravity="center_vertical">
        <ImageView
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:src="@drawable/cherries"/>
    </TableRow>

</TableLayout>
<TableLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp">
    <TableRow
        android:gravity="center_vertical">
        <pl.droidsonroids.gif.GifImageView
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:src="@drawable/ene"/>
    </TableRow>

</TableLayout>
<TableLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp">
    <TableRow
        android:gravity="center_vertical">
        <pl.droidsonroids.gif.GifImageView
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:src="@drawable/ene2"/>
    </TableRow>

</TableLayout>

<Button
    android:id="@+id/start"
    android:layout_width="120dp"
    android:layout_height="80dp"
    android:layout_marginTop="100dp"
    android:onClick="startGame"
    android:background="@drawable/custom_start"
    android:layout_marginBottom="100dp"/>
<Button
    android:id="@+id/About"
    android:layout_width="80dp"
    android:layout_height="60dp"
    android:layout_marginTop="-100dp"
    android:onClick="aboutGame"
    android:background="@drawable/custom_about"
    android:layout_marginBottom="100dp"/>

<com.google.android.gms.ads.AdView
    android:id="@+id/adView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_gravity="bottom|center"
    app:adSize="BANNER"
    app:adUnitId="" />


</LinearLayout>