Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.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/178.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
加载Android活动的UI时出现Java内存不足错误_Java_Android_Out Of Memory - Fatal编程技术网

加载Android活动的UI时出现Java内存不足错误

加载Android活动的UI时出现Java内存不足错误,java,android,out-of-memory,Java,Android,Out Of Memory,我一直在尝试加载一个非常基本的活动,其中包含on ImageButton、2个TextView、一个textField和一个ImageView <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layou

我一直在尝试加载一个非常基本的活动,其中包含on ImageButton、2个TextView、一个textField和一个ImageView

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="false"
android:id="@+id/namescreenactivity">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="Welcome to your Pet House"
    android:id="@+id/Welcome"
    android:textColor="#ff000000"
    android:textStyle="bold"
    android:layout_marginTop="94dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true" />

<EditText android:id="@+id/edit_message"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="@string/edit_message"
    android:layout_marginTop="36dp"
    android:textColor="#ff000000"
    android:layout_below="@+id/Welcome"
    android:layout_alignEnd="@+id/Welcome" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="Name your pet"
    android:id="@+id/NameLabel"
    android:layout_alignTop="@+id/edit_message"
    android:layout_alignStart="@+id/Welcome" />

<ImageView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:src="@drawable/sun"
    android:layout_alignBottom="@+id/Welcome"
    android:layout_alignParentEnd="true"
    android:layout_marginBottom="39dp"
    android:id="@+id/sun" />

<ImageButton
    android:layout_width="250dp"
    android:layout_height="250dp"
    android:id="@+id/imageButton"
    android:src="@drawable/camel"
    android:clickable="true"
    android:scaleType="fitXY"
    android:onClick="sendMessage"
    android:layout_alignParentBottom="true"
    android:layout_alignEnd="@+id/edit_message"
    android:layout_marginBottom="31dp" />
在MainActivity.java的OnCreate函数中,我只是调用setContentViewR.layout.activity_main; 然而,我的应用程序的内存使用情况图表显示,尽管我在应用程序中的所有图像的总大小小于1MB,用于ImageButton的图像的总大小为193KB,但我使用的内存约为44MB

我相信这就是我的应用程序崩溃并抛出内存不足错误的原因

Caused by: java.lang.OutOfMemoryError: Failed to allocate a 138018828 byte allocation with 4194304 free bytes and 35MB until OOM
        at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
        at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
        at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:609)
        at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
        at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:988)
        at android.content.res.Resources.loadDrawableForCookie(Resources.java:2474)
        at android.content.res.Resources.loadDrawable(Resources.java:2381)
        at android.content.res.TypedArray.getDrawable(TypedArray.java:749)
at android.widget.ImageView.<init>(ImageView.java:146)
at android.widget.ImageButton.<init>(ImageButton.java:86)
at android.widget.ImageButton.<init>(ImageButton.java:82)
at android.widget.ImageButton.<init>(ImageButton.java:78)
at java.lang.reflect.Constructor.newInstance(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
at android.view.LayoutInflater.createView(LayoutInflater.java:607)
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:378)
at android.app.Activity.setContentView(Activity.java:2145)
at com.example.healthypetdhr.MainActivity.onCreate(MainActivity.java:37)
at android.app.Activity.performCreate(Activity.java:5990)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5257)
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:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)'

请帮助我找出问题所在,以及如何解决此问题。

当图像较大且放置在drawableldpi/mdpi中时,可能会发生这种情况。。。文件夹,以便android操作系统根据需要调整它们的大小,但在您的情况下,您说它们非常小,仍然尝试将这些图像放入其中:

res/drawable-nodpi

文件夹,以避免它们重新缩放和按原样使用。

很可能是您正在使用的绘图工具导致了此问题。 你可以参考他的问题

图像解码为位图后可能需要更多的内存空间,您可以使用位图选项,修改参数以调整其大小

您可能希望清理和刷新项目

按照人们所说的检查res文件夹

有关更多信息,请参阅本研究:

您能否同时提供@drawable/sun和@drawable/camel图像?请记住,图像在绘制时会解码为位图。这是正常的,但需要比APK中的文件多得多的内存。不要直接将大图像加载到imageview,而是使用位图选项将其大小调整为所需大小,然后设置为imageview。我应该如何使用回答中提到的getAssetImage方法?你能指引我吗?