java - 过多的 ImageButton 会导致应用程序崩溃

标签 java android android-layout android-fragments

在我的 Android 应用程序中,我必须在选项卡式 Activity 的第一个 fragment 中显示大约 43 个 ImageButton,在另一个 fragment 中显示其他不同的 43 个。第一个工作正常,当我添加第二个 fragment 时,应用程序崩溃了。不仅如此,如果我想显示应用程序崩溃之前从未使用过的特定图像,单击其中一个图像按钮。

我的可绘制文件夹中的图像为 1MB(共 159 张图像),所以我真的不知道它是否太多。

这是出现的错误信息:

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

(我不能发布所有错误,因为该网站认为这是垃圾邮件)

提前非常感谢您。

最佳答案

将其粘贴到 list 文件中:-

android:largeHeap="true"

另请阅读:http://dwij.co.in/increase-heap-size-of-android-application/

示例:-

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

关于java - 过多的 ImageButton 会导致应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43574078/

相关文章:

java - 如何使用 onClick 在 startService() 和 stopService() 之间切换?

java - Android ProgressDialog颜色随机反转

android - TextView 使用 constraintLayout 离开屏幕

java - 验证 Selenium WebDriver 中的链接?

android - 应用程序公钥在android应用内计费中有什么用

java - 在 spring java 应用程序中嵌入 openfire

android - 如果设备已经在 Geofence android 中,则停止初始触发

android - 如何在线性布局(另一个线性布局的子布局)中均匀分布 View ?

java - 进度条显示两个不同颜色的进度

java - 存储/保存 Activity 中收到的推送通知