2016-09-02 20 views
1

私のアプリケーションには、バックグラウンドサービスで5つ以上のアクティビティが含まれています。私がアプリケーションを実行し、ボタンをクリックして2番目のアクティビティを作成すると、アプリケーションがクラッシュします。原因:java.lang.OutOfMemoryError(新しいアクティビティの開始)

ありがとうございました。

私のxmlレイアウト: enter image description here

はここに私のonCreateです:

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

     Button button = (Button) findViewById(R.id.button1); 

     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(MainActivity.this, Main2Activity.class); 
       startActivity(intent); 
       finish(); 
      } 
     }); 
    } 

logcat:

E/AndroidRuntime: FATAL EXCEPTION: main 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.apollo.arrroo/com.example.apollo.arrroo.Main2Activity}: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown> 
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074) 
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2099) 
                      at android.app.ActivityThread.access$600(ActivityThread.java:138) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205) 
                      at android.os.Handler.dispatchMessage(Handler.java:99) 
                      at android.os.Looper.loop(Looper.java:137) 
                      at android.app.ActivityThread.main(ActivityThread.java:4929) 
                      at java.lang.reflect.Method.invokeNative(Native Method) 
                      at java.lang.reflect.Method.invoke(Method.java:511) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565) 
                      at dalvik.system.NativeStart.main(Native Method) 
                     Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown> 
                      at android.view.LayoutInflater.createView(LayoutInflater.java:613) 
                      at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
                      at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660) 
                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:466) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
                      at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                      at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                      at com.example.apollo.arrroo.Main2Activity.onCreate(Main2Activity.java:11) 
                      at android.app.Activity.performCreate(Activity.java:5254) 
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1082) 
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2038) 
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2099) 
                      at android.app.ActivityThread.access$600(ActivityThread.java:138) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205) 
                      at android.os.Handler.dispatchMessage(Handler.java:99) 
                      at android.os.Looper.loop(Looper.java:137) 
                      at android.app.ActivityThread.main(ActivityThread.java:4929) 
                      at java.lang.reflect.Method.invokeNative(Native Method) 
                      at java.lang.reflect.Method.invoke(Method.java:511) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565) 
                      at dalvik.system.NativeStart.main(Native Method) 
                     Caused by: java.lang.reflect.InvocationTargetException 
                      at java.lang.reflect.Constructor.constructNative(Native Method) 
                      at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 
                      at android.view.LayoutInflater.createView(LayoutInflater.java:587) 
                      at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
                      at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660) 
                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:466) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
                      at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                      at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                      at com.example.apollo.arrroo.Main2Activity.onCreate(Main2Activity.java:11) 
                      at android.app.Activity.performCreate(Activity.java:5254) 
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1082) 
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2038) 
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2099) 
                      at android.app.ActivityThread.access$600(ActivityThread.java:138) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205) 
                      at android.os.Handler.dispatchMessage(Handler.java:99) 
                      at android.os.Looper.loop(Looper.java:137) 
                      at android.app.ActivityThread.main(ActivityThread.java:4929) 
                      at java.lang.reflect.Method.invokeNative(Native Method) 
                      at java.lang.reflect.Method.invoke(Method.java:511) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565) 
                      at dalvik.system.NativeStart.main(Native Method) 
                     Caused by: java.lang.OutOfMemoryError 
                      at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
                      at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:500) 
                      at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:353) 
                      at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:781) 
                      at android.content.res.Resources.loadDrawable(Resources.java:1969) 
                      at android.content.res.TypedArray.getDrawable(TypedArray.java:601) 
                      at android.view.View.<init>(View.java:3348) 
                      at android.view.View.<init>(View.java:3285) 
                      at android.view.ViewGroup.<init>(ViewGroup.java:421) 
                      at android.widget.RelativeLayout.<init>(RelativeLayout.java:187) 
                      at java.lang.reflect.Constructor.constructNative(Native Method) 
                      at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 
                      at android.view.LayoutInflater.createView(LayoutInflater.java:587) 
                      at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
                      at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660) 
                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:466) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
                      at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                      at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                      at com.example.apollo.arrroo.Main2Activity.onCreate(Main2Activity.java:11) 
// even more 
+1

投稿する –

+0

xml –

+0

を投稿して、その背景を削除し、エラーが発生していないかどうかを確認してください。 –

答えて

0

あなたの背景画像のファイルサイズが大きすぎます。私はあなたの構造がどのように見えるかはわかりませんが、gogo1はおそらく画面サイズに基づいていくつかの異なる解像度を持つべきです。それだけでなく、モバイルで最適化して、効率的にロードできるようにする必要があります(メモリの例外を避ける)。

イメージをロードする必要があり、ファイルサイズを圧縮できない場合は、メモリ不足の例外を発生させないサイズにドロワブルを圧縮した後、プログラムでバックグラウンドを設定することが唯一のオプションです。

私がお勧めするのはgogo1の修正ですので、画像はさまざまな画面サイズに最適化されています。ファイルサイズは〜100kbまでです(それでも過大です)。

+0

あなたの答えは私に印象づけました。私は自分のイメージを最適化するために何を使わなければならないのか教えてください。ありがとうございます –

+0

画像の寸法をご記入ください。おそらく、OOMの例外を避けるためにサイズを変更することができます。 – fernandospr

+0

一問一答です。どのような一般的なアンドロイドdevlopersは、メモリを避けるためにイメージのサイズを減らすために使用ですか? –

0

大きな画像(jpeg)のためにメモリが不足している場合は、ソフトウェアFormatFactoryを使用する必要があります。最初に左に表示されます:(画像)それをクリックし、すべてをjpg --- & -click on - 出力設定&(最大幅1024最大高さ768)を選択してください。 &最後にファイルを追加するをクリックしてデスクトップからイメージを選択し、[OK]をクリックします。開始をクリックします。

関連する問題