gpt4 book ai didi

java - 在 java gradle android 项目中调用 setContentView 时出现 OOM 问题

转载 作者:行者123 更新时间:2023-11-29 05:05:36 26 4
gpt4 key购买 nike

我正在使用 Intellij-idea,我让这个项目在没有 gradle 的情况下工作,运行得很好并且功能正常。将它迁移到一个 gradle 项目(通过创建一个新的 gradle android 项目并复制代码),现在我得到了这个堆栈跟踪:(抱歉它太小了......)

stack trace for my OOM issue

这是我的布局 xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/blue_background"
android:contentDescription="@string/backgroundDesc"
android:src="@drawable/title_image"
android:paddingTop="5dp"
android:paddingStart="7dp"
android:paddingEnd="5dp"
android:paddingBottom="5dp"
/>
<TextView
android:id="@+id/writtenBy"
android:text="@string/gameBy"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_gravity="end"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:gravity="end"
android:paddingStart="0dp"
android:paddingEnd="10dp"
android:paddingBottom="10dp"
/>
</RelativeLayout>

启动画面.java:

package com.thenewjonathan.gloryblades;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.Window;
import android.widget.TextView;

public class SplashScreen extends Activity
{
TextView writtenBy;
private static int TIME_OUT = 3000;

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.splash);

writtenBy = (TextView) findViewById(R.id.writtenBy);

new Handler().postDelayed(new Runnable()
{
@Override
public void run()
{
Intent i = new Intent(SplashScreen.this, MainMenu.class);
startActivity(i);

finish();
}
}, TIME_OUT);
}
}

list :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.thenewjonathan.gloryblades" >

<uses-permission
android:name="android.permission.internet"/>
<uses-permission
android:name="android.permission.access_network_state"/>
<uses-permission
android:name="android.permission.write_external_storage"/>

<uses-sdk
android:minSdkVersion="17"/>
<application
android:label="@string/app_name"
android:allowBackup="true"
android:icon="@drawable/title_image"
>
<!--<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"
/>-->
<activity
android:name="com.thenewjonathan.gloryblades.SplashScreen"
android:label="@string/app_name"
android:screenOrientation="portrait"
>
<intent-filter>
<action
android:name="android.intent.action.MAIN"/>
<category
android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>

<activity
android:name="com.thenewjonathan.gloryblades.MainMenu"
android:label="Main Menu"
android:screenOrientation="portrait"
>
</activity>
<activity
android:name="com.thenewjonathan.gloryblades.SetUpNewGame"
android:screenOrientation="portrait"
>
</activity>
<activity
android:name="com.thenewjonathan.gloryblades.StartExistingGame"
android:screenOrientation="portrait"
>
</activity>
<activity
android:name="com.thenewjonathan.gloryblades.StoryBoard"/>
<!--<activity
android:name="com.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="@android:style/Theme.Translucent" />-->
</application>

</manifest>

如有任何见解,我们将不胜感激。我查看了我可以在 StackOverflow 此处找到的所有其他 OOM 问题,但找不到我的实际问题。他们主要是关于尝试创建一个图像,而我的只是在我的 SplashScreen.java 文件中调用 .setContentView 时发生。

setContentView(R.layout.splash);

所以我猜这是导致问题的背景?但是为什么它不会在非 gradle 项目中引起问题呢?无论如何,感谢您提前输入。

这是 title_image 的规范: enter image description here

最佳答案

您可以将此行添加到应用程序类声明到 list 文件中以请求更大的堆大小。

android:largeHeap="true" 

更改 list 文件代码。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.thenewjonathan.gloryblades" >

<uses-permission
android:name="android.permission.internet"/>
<uses-permission
android:name="android.permission.access_network_state"/>
<uses-permission
android:name="android.permission.write_external_storage"/>

<uses-sdk
android:minSdkVersion="17"/>
<application
android:label="@string/app_name"
android:allowBackup="true"
android:icon="@drawable/title_image"
android:largeHeap="true">
<!--<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"
/>-->
<activity
android:name="com.thenewjonathan.gloryblades.SplashScreen"
android:label="@string/app_name"
android:screenOrientation="portrait"
>
<intent-filter>
<action
android:name="android.intent.action.MAIN"/>
<category
android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>

<activity
android:name="com.thenewjonathan.gloryblades.MainMenu"
android:label="Main Menu"
android:screenOrientation="portrait"
>
</activity>
<activity
android:name="com.thenewjonathan.gloryblades.SetUpNewGame"
android:screenOrientation="portrait"
>
</activity>
<activity
android:name="com.thenewjonathan.gloryblades.StartExistingGame"
android:screenOrientation="portrait"
>
</activity>
<activity
android:name="com.thenewjonathan.gloryblades.StoryBoard"/>
<!--<activity
android:name="com.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="@android:style/Theme.Translucent" />-->
</application>

</manifest>

消除您的 OOM 问题会是更好的选择。

关于java - 在 java gradle android 项目中调用 setContentView 时出现 OOM 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30487595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com