3

Ich versuche, meine Anwendung zum Anzeigen verschiedener Ansichten angezeigt, wenn Bildschaltflächen geklickt werden. Es ist eine ziemlich einfache Anwendung, aber ich kann nicht testen, um zu sehen, ob es funktioniert, weil ich einen Out of Memory Error bekomme. Hier ist die Java-KlasseAndroid Studio: java.lang.OutOfMemoryError

Edit:

I verringert die Größe der Schaltfläche Bilder um 50% und ich immer noch nicht genügend Arbeitsspeicher-Fehler. Zusätzlich habe ich Android: largeHeap = "true" zum Android-Manifest hinzugefügt. Im Folgenden sind die Original-Dateien, aber mit Updates

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; 
     } 
    } 

} 

ist hier der Fehler, den ich bekommen, wird der Fehler bei setContentView (R.layout.activity_dashboard) geworfen

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.<init>(ImageView.java:129) 
                at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:57) 
                at android.support.v7.widget.AppCompatImageView.<init>(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) 

ist hier activity_dashboard.xml

<?xml version="1.0" encoding="utf-8"?> 
<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="900dp" 
    tools:context=".Dashboard" 
    android:background="@color/AppBackground"> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="850dp" 
     android:id="@+id/scrollView" > 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@+id/login"> 

      <ImageView 
       android:layout_width="761dp" 
       android:layout_height="876dp" 
       android:id="@+id/visioneervideo" 
       android:src="@drawable/video" /> 

      <RelativeLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:background="@drawable/signin"> 

       <LinearLayout 
        android:orientation="vertical" 
        android:layout_width="295dp" 
        android:layout_height="200dp" 
        android:layout_marginBottom="203dp" 
        android:layout_alignParentBottom="true" 
        android:layout_centerHorizontal="true"> 

        <EditText 
         android:layout_width="295dp" 
         android:layout_height="49dp" 
         android:ems="10" 
         android:id="@+id/editText" 
         android:background="@drawable/username" 
         android:editable="true" 
         android:textColor="#FFFFFFFF" 
         android:textAlignment="center" 
         android:text="Username" 
         android:layout_alignParentTop="true" 
         android:layout_centerHorizontal="true" /> 

        <EditText 
         android:layout_width="295dp" 
         android:layout_height="49dp" 
         android:ems="10" 
         android:id="@+id/editText2" 
         android:background="@drawable/username" 
         android:editable="true" 
         android:textColor="#FFFFFFFF" 
         android:textAlignment="center" 
         android:text="Password" 
         android:layout_below="@+id/editText" 
         android:layout_alignLeft="@+id/editText" 
         android:layout_alignStart="@+id/editText" /> 

        <ImageView 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         android:id="@+id/loginButton" 
         android:src="@drawable/login" 
         android:onClick="buttonClick" /> 
       </LinearLayout> 
      </RelativeLayout> 

     </LinearLayout> 
    </ScrollView> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="850dp" 
     android:id="@+id/scrollView2" 
     android:background="@color/AppBackground"> 

     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@+id/appactivities"> 

      <LinearLayout 
       android:orientation="horizontal" 
       android:layout_width="match_parent" 
       android:layout_height="64dp" 
       android:id="@+id/optionsmenu" 
       android:background="@color/DashboardBackgroundnew"> 

       <ImageView 
        android:layout_width="241dp" 
        android:layout_height="wrap_content" 
        android:id="@+id/xprizelogo" 
        android:background="@drawable/xprizelogo" /> 

       <ImageView 
        android:layout_width="141dp" 
        android:layout_height="wrap_content" 
        android:id="@+id/dashboardbtn" 
        android:background="@drawable/ic_dashboard" /> 

       <ImageView 
        android:layout_width="148dp" 
        android:layout_height="wrap_content" 
        android:id="@+id/teamreviewbtn" 
        android:background="@drawable/ic_teamreview" /> 

       <ImageView 
        android:layout_width="126dp" 
        android:layout_height="wrap_content" 
        android:id="@+id/teambiosbtn" 
        android:background="@drawable/ic_teambios" /> 

       <ImageView 
        android:layout_width="119.5dp" 
        android:layout_height="wrap_content" 
        android:id="@+id/mentorsbtn" 
        android:background="@drawable/ic_mentor" /> 

       <ImageView 
        android:layout_width="127.5dp" 
        android:layout_height="wrap_content" 
        android:id="@+id/schedulebtn" 
        android:background="@drawable/ic_schedule" /> 

       <ImageView 
        android:layout_width="64dp" 
        android:layout_height="64dp" 
        android:id="@+id/twitterbtn" 
        android:background="@drawable/ic_twitter" /> 

       <ImageView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:id="@+id/profilebtn" /> 
      </LinearLayout> 

      <ViewStub android:id="@+id/stub" 
       android:inflatedId="@+id/subTree" 
       android:layout_width="120dip" 
       android:layout_height="40dip" /> 

     </LinearLayout> 
    </ScrollView> 

</RelativeLayout> 

und hier ist das Manifest

AndroidManifest.xml

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

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="XPrize" 
     android:supportsRtl="true" 
     android:largeHeap="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".Dashboard"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 
+3

Mögliche doppelte http://stackoverflow.com/questions/25719620/how-to -solve-java-lang-outofmemoryerror-probleme-in-android http://stackoverflow.com/questions/19558713/android-java-lang-outofmemoryerror – karan

+0

Es gibt zwei Lösungen, die mir bekannt sind, wo man die Operation durchführen soll fädeln und teilen Sie die Operation und ein anderes ist t o Vergrößern Sie die Größe der App, wo die zweite Option nicht empfohlen wird – silverFoxA

Antwort

2

Ihre Bilder auf den Tasten sind (Art und Weise) zu groß, so dass anzuzeigen Sie benötigen mehr Speicher als verfügbar, erstellen Sie einfach Symbole/kleinere Versionen der Bilder und lassen Sie diese auf den Schaltflächen

erscheinen
+0

Ich schneide die Größe jedes Bildes um 50% und bekomme immer noch einen nicht ausreichenden Speicherfehler –

+0

Nun, wie groß sind sie jetzt noch? @DerekDeLizo –

1

Set largeHeap Eigenschaft auf True in AndroidManifest.xml durch,

android:largeHeap="true" 

So können Sie die AndroidManifest.xml wie, ändern

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

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="XPrize" 
     android:supportsRtl="true" 

     android:largeHeap="true" 

     android:theme="@style/AppTheme"> 
     <activity android:name=".Dashboard"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 
Verwandte Themen