2017-04-23 13 views
2

私のAndroidアプリでは、タブ付きアクティビティの最初の部分に約43個のImageButtonが表示され、他の部分には43個の他の部分が表示される必要があります。最初のものは正常に動作し、アプリケーションがクラッシュした2番目の断片を追加したときです。それだけでなく、アプリケーションがクラッシュする前に使用されていない特定のイメージを表示する場合、ImageButtonの1つをクリックするだけです。ImageButtonが多すぎるとアプリがクラッシュする

私のドロウアブルフォルダ内の画像は1MB(159枚)ですので、あまりにも多いかどうかはわかりません。

これが表示されるエラーmeggagesです:

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.myname.hira_kana, PID: 6672 java.lang.OutOfMemoryError: Failed to allocate a 9000012 byte allocation with 204192 free bytes and 199KB until OOM at dalvik.system.VMRuntime.newNonMovableArray(Native Method) at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:620) at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:455) at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1155) at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:720) at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571) at android.content.res.Resources.getDrawable(Resources.java:771) at android.content.Context.getDrawable(Context.java:525) at android.support.v4.content.ContextCompatApi21.getDrawable(ContextCompatApi21.java:30) at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:372) at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:202) at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:190) at android.support.v7.content.res.AppCompatResources.getDrawable(AppCompatResources.java:100) at android.support.v7.widget.AppCompatImageHelper.loadFromAttributes(AppCompatImageHelper.java:54) at android.support.v7.widget.AppCompatImageButton.(AppCompatImageButton.java:66) at android.support.v7.widget.AppCompatImageButton.(AppCompatImageButton.java:56) at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:118) at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1021) at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1080) at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:47) at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:192) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:769) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727) at android.view.LayoutInflater.rInflate(LayoutInflater.java:858) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) at android.view.LayoutInflater.rInflate(LayoutInflater.java:861) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) at android.view.LayoutInflater.rInflate(LayoutInflater.java:861) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) at android.view.LayoutInflater.rInflate(LayoutInflater.java:861) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) at android.view.LayoutInflater.inflate(LayoutInflater.java:518) at android.view.LayoutInflater.inflate(LayoutInflater.java:426) at layout.frkata.onCreateView(frkata.java:56) at android.support.v4.app.Fragment.performCreateView(Fragment.java:2189) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528) at

(サイトはそれがスパムだと思うので、私はすべてのエラーを投稿cuoldn't)

を事前にありがとうございました。

+1

9000012バイトを割り当てようとしています。これは1500x1500ピクセルのイメージに相当します。 **これは大きすぎます**。 「私のドロウアブルフォルダ内の画像は1MBです」 - それは無意味です。重要なのはメモリのサイズで、ディスク上のイメージは圧縮された形式で保存されます。 – CommonsWare

答えて

2

マニフェストファイルでこれを貼り付けます -

アンドロイド:http://dwij.co.in/increase-heap-size-of-android-application/

例:largeHeap = "true" を

また、この読み -

<application 
    android:name=".MyApplication" 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="Mall" android:largeHeap="true" 
    android:logo="@drawable/logo_for_up" 
    android:screenOrientation="portrait" 
    android:theme="@style/AppTheme" > 
</application> 
0

問題があるためであるかもしれないがあなたの画像は非常に大きいかもしれません。小さな高さと幅のビットマップを作成し、それらの画像をImageviewで使用してください。 次のコードを使用して、小さなビットマップを作成できます。

bitmap = Bitmap.createScaledBitmap(bitmap, outWidth, outHeight, true); 
関連する問題