gpt4 book ai didi

android - 启动新 Activity 时出现 OutOfMemoryError

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

我正在尝试通过以下方式从另一个 Activity 启动一个 Activity :

Intent loginActivity = new Intent(mainAppContext,LoginActivity.class);
loginActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
loginActivity.putExtra("Message", mainAppContext.getResources().getString(R.string.RegisteringUserAPIFailure));
mainAppContext.startActivity(loginActivity);

新的 Activity 布局只有两个图像,一个是 7kb 的 ImageView,另一个是 11kb 的 ImageButton。哪个不应该产生 OutOfMemoryError?

但这会产生以下错误:

03-21 21:20:14.318 20567-20567/com.administrator.myproject E/art: Throwing OutOfMemoryError "Failed to allocate a 108000012 byte allocation with 9062644 free bytes and 8MB until OOM"
03-21 21:20:14.383 20567-20567/com.administrator.myproject E/art: Throwing OutOfMemoryError "Failed to allocate a 108000012 byte allocation with 9062596 free bytes and 8MB until OOM"
03-21 21:20:14.423 20567-20567/com.administrator.myproject E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.administrator.myproject, PID: 20567
java.lang.OutOfMemoryError: Failed to allocate a 108000012 byte allocation with 9062596 free bytes and 8MB until OOM
at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
at android.graphics.Bitmap.nativeCreate(Native Method)
at android.graphics.Bitmap.createBitmap(Bitmap.java:942)
at android.graphics.Bitmap.createBitmap(Bitmap.java:913)
at android.graphics.Bitmap.createBitmap(Bitmap.java:880)
at android.graphics.drawable.VectorDrawable$VectorDrawableState.createCachedBitmapIfNeeded(VectorDrawable.java:713)
at android.graphics.drawable.VectorDrawable.draw(VectorDrawable.java:280)
at android.widget.ImageView.onDraw(ImageView.java:1197)
at android.view.View.draw(View.java:16536)
at android.view.View.updateDisplayListIfDirty(View.java:15466)
at android.view.View.getDisplayList(View.java:15488)
at android.view.View.draw(View.java:16258)
at android.view.ViewGroup.drawChild(ViewGroup.java:3713)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3506)
at android.view.View.draw(View.java:16539)
at android.view.View.updateDisplayListIfDirty(View.java:15466)
at android.view.View.getDisplayList(View.java:15488)
at android.view.View.draw(View.java:16258)
at android.view.ViewGroup.drawChild(ViewGroup.java:3713)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3506)
at android.view.View.draw(View.java:16539)
at android.view.View.updateDisplayListIfDirty(View.java:15466)
at android.view.View.getDisplayList(View.java:15488)
at android.view.View.draw(View.java:16258)
at android.view.ViewGroup.drawChild(ViewGroup.java:3713)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3506)
at android.view.View.updateDisplayListIfDirty(View.java:15461)
at android.view.View.getDisplayList(View.java:15488)
at android.view.View.draw(View.java:16258)
at android.view.ViewGroup.drawChild(ViewGroup.java:3713)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3506)
at android.view.View.updateDisplayListIfDirty(View.java:15461)
at android.view.View.getDisplayList(View.java:15488)
at android.view.View.draw(View.java:16258)
at android.view.ViewGroup.drawChild(ViewGroup.java:3713)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3506)
at android.view.View.updateDisplayListIfDirty(View.java:15461)
at android.view.View.getDisplayList(View.java:15488)
at android.view.View.draw(View.java:16258)
at android.view.ViewGroup.drawChild(ViewGroup.java:3713)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3506)
at android.view.View.updateDisplayListIfDirty(View.java:15461)
at android.view.View.getDisplayList(View.java:15488)
at android.view.View.draw(View.java:16258)
at android.view.ViewGroup.drawChild(ViewGroup.java:3713)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3506)
at android.view.View.draw(View.java:16539)
at android.widget.FrameLayout.draw(FrameLayout.java:598)
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:3111)
at android.view.View.updateDisplayListIfDirty(View.java:15466)
at android.view.View.getDisplayList(View.java:15488)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:309)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:315)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:354)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2942)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2739)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2325)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1301)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7021)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777)
at android.view.Choreographer.doCallbacks(Choreographer.java:590)
at android.view.Choreographer.doFrame(Choreographer.java:560)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763)
at android.os.Handler.handleCallback(Handler.java:739)
at a

--

<ImageView
android:id="@+id/imageView1"
android:layout_width="@dimen/dimen_8"
android:layout_height="@dimen/dimen_8"
android:layout_below="@+id/login_progress"
android:layout_centerHorizontal="true"
android:layout_gravity="center_horizontal"
android:src="@drawable/application_logo_color" />

<ImageButton
android:id="@+id/gplus_sign_in_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/margin_1"
android:background="@color/transparent"
android:elevation="8dp"
android:src="@drawable/google_plus_sign_in_button" />


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);

ImageButton gPlusSignInButton = (ImageButton) findViewById(R.id.gplus_sign_in_button);
SnackBarView = (View) gPlusSignInButton;
gPlusSignInButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(SnackBarView, getResources().getString(R.string.SendingGoogleSignIn), Snackbar.LENGTH_INDEFINITE).setAction("Action", null).show();
googlePlusSignIn();
}
});

Bundle extras = getIntent().getExtras();
if (extras != null) {
String message = extras.getString("Message");
Snackbar.make(SnackBarView, message, Snackbar.LENGTH_INDEFINITE).setAction("Action", null).show();
}
}

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="2500dp"
android:height="1200dp"
android:viewportWidth="2500.0"
android:viewportHeight="1200.0">

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="@dimen/dimen_8"
android:height="51dp"
android:viewportWidth="346.0"
android:viewportHeight="72.0">

最佳答案

看起来您正在使用矢量绘图。

确保它们具有合理的固有尺寸集(宽度和高度)

例如:

<vector xmlns:android="http://schemas.android.com/apk/res/android" 
android:viewportWidth="512" android:viewportHeight="512"
android:width="64dp" android:height="64dp">

如果您将尺寸设置得太大,当系统尝试显示它们时会抛出内存不足错误,因为它会首先尝试以您设置的尺寸创建它们。

关于android - 启动新 Activity 时出现 OutOfMemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36137315/

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