Android Studio: java.lang.OutOfMemoryError

18 浏览
0 Comments

Android Studio: java.lang.OutOfMemoryError

这个问题已经在这里有答案了:

如何解决Android下的java.lang.OutOfMemoryError问题[重复]

我正在尝试让我的应用在图片按钮被单击时显示不同的视图。这是一个相当简单的应用程序,但我无法测试是否有效,因为我不断收到内存不足的错误。以下是java类

编辑:

我将按钮图像的大小减小了50%,但仍然遇到内存不足的错误。此外,我在Android清单中添加了android:largeHeap=\"true\"。以下是原始文件,但已进行更新。

Dashboard.java

    package com.pixel.deloitte.xprizeapplication;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.Window;
import android.widget.TabHost;
import android.widget.TextView;
import java.io.IOException;
public class Dashboard extends AppCompatActivity {
    //private TabHost tabHost;
    //private int[] tabs = {R.drawable.dashboardnotclicked,R.drawable.teamreviewnotclicked,R.drawable.teambiosnotclicked,R.drawable.mentornotclicked,R.drawable.schedulenotclicked};
    public static class MyUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {
        @Override
        public void uncaughtException(Thread thread, Throwable ex) {
            if (ex.getClass().equals(OutOfMemoryError.class)) {
                try {
                    android.os.Debug.dumpHprofData("/sdcard/dump.hprof");
                } catch (IOException e) {
                    e.printStackTrace();
                }
                ex.printStackTrace();
            }
        }
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //Thread.currentThread().setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandler());
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_dashboard);
        findViewById(R.id.login).setVisibility(View.VISIBLE);
    }
    public void buttonClick(View v){
        switch(v.getId()){
            case R.id.loginButton:
                break;
            case R.id.dashboardbtn:
                break;
            case R.id.teamreviewbtn:
                break;
            case R.id.teambios:
                break;
            case R.id.mentorsbtn:
                break;
            case R.id.schedulebtn:
                break;
        }
    }
}

以下是我遇到的错误,该错误在setContentView(R.layout.activity_dashboard)处抛出

java.lang.OutOfMemoryError

E/AndroidRuntime: FATAL EXCEPTION: main
                                                 Process: com.pixel.deloitte.xprizeapplication, PID: 2573
                                                 java.lang.OutOfMemoryError
                                                     at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
                                                     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:587)
                                                     at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:422)
                                                     at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:840)
                                                     at android.content.res.Resources.loadDrawable(Resources.java:2115)
                                                     at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
                                                     at android.widget.ImageView.(ImageView.java:129)
                                                     at android.support.v7.widget.AppCompatImageView.(AppCompatImageView.java:57)
                                                     at android.support.v7.widget.AppCompatImageView.(AppCompatImageView.java:53)
                                                     at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:106)
                                                     at android.support.v7.app.AppCompatDelegateImplV7.createView(AppCompatDelegateImplV7.java:1008)
                                                     at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(AppCompatDelegateImplV7.java:1067)
                                                     at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
                                                     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685)
                                                     at android.view.LayoutInflater.rInflate(LayoutInflater.java:756)
                                                     at android.view.LayoutInflater.rInflate(LayoutInflater.java:759)
                                                     at android.view.LayoutInflater.rInflate(LayoutInflater.java:759)
                                                     at android.view.LayoutInflater.rInflate(LayoutInflater.java:759)
                                                     at android.view.LayoutInflater.rInflate(LayoutInflater.java:759)
                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
                                                     at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)
                                                     at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
                                                     at com.pixel.deloitte.xprizeapplication.Dashboard.onCreate(Dashboard.java:36)
                                                     at android.app.Activity.performCreate(Activity.java:5231)
                                                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
                                                     at android.app.ActivityThread.access$800(ActivityThread.java:135)
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
                                                     at android.os.Handler.dispatchMessage(Handler.java:102)
                                                     at android.os.Looper.loop(Looper.java:136)
                                                     at android.app.ActivityThread.main(ActivityThread.java:5017)
                                                     at java.lang.reflect.Method.invokeNative(Native Method)
                                                     at java.lang.reflect.Method.invoke(Method.java:515)
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
                                                     at dalvik.system.NativeStart.main(Native Method)

以下是

activity_dashboard.xml

 

    
        
            
            
                
                    
                    
                    
                
            
        
    
    
        
            
                
                
                
                
                
                
                
                
            
            
        
    

这是清单

AndroidManifest.xml



    
        
            
                
                
            
        
    

admin 更改状态以发布 2023年5月20日
0
0 Comments

您按钮上的图像太大了,因此需要比可用的更多的内存才能显示它们,只需创建图标/图像的较小版本,并在按钮上显示即可。

0
0 Comments

AndroidManifest.xml中将largeHeap属性设置为True,方法如下:

android:largeHeap="true"

然后你可以在AndroidManifest.xml中修改如下:



    
        
            
                
                
            
        
    

0