android - 错误膨胀类 android.widget.ProgressBar/致命强制关闭错误 - Android/Java

标签 android out-of-memory fatal-error forceclose

尝试在 Android 应用程序中显示进度条和图像时遇到错误:

07-02 12:33:55.008: E/AndroidRuntime(1565): FATAL EXCEPTION: main
07-02 12:33:55.008: E/AndroidRuntime(1565): Process: com.example.app, PID: 1565
07-02 12:33:55.008: E/AndroidRuntime(1565): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.app/com.example.app.Download}: android.view.InflateException: Binary XML file line #42: Error inflating class android.widget.ProgressBar
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.os.Handler.dispatchMessage(Handler.java:102)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.os.Looper.loop(Looper.java:136)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.app.ActivityThread.main(ActivityThread.java:5001)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at java.lang.reflect.Method.invokeNative(Native Method)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at java.lang.reflect.Method.invoke(Method.java:515)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at dalvik.system.NativeStart.main(Native Method)
07-02 12:33:55.008: E/AndroidRuntime(1565): Caused by: android.view.InflateException: Binary XML file line #42: Error inflating class android.widget.ProgressBar
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.view.LayoutInflater.createView(LayoutInflater.java:620)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.app.Activity.setContentView(Activity.java:1929)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at com.example.app.Download.onCreate(Download.java:78)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.app.Activity.performCreate(Activity.java:5231)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
07-02 12:33:55.008: E/AndroidRuntime(1565):     ... 11 more
07-02 12:33:55.008: E/AndroidRuntime(1565): Caused by: java.lang.reflect.InvocationTargetException
07-02 12:33:55.008: E/AndroidRuntime(1565):     at java.lang.reflect.Constructor.constructNative(Native Method)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.view.LayoutInflater.createView(LayoutInflater.java:594)
07-02 12:33:55.008: E/AndroidRuntime(1565):     ... 25 more
07-02 12:33:55.008: E/AndroidRuntime(1565): Caused by: java.lang.OutOfMemoryError
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:594)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:429)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:840)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.content.res.Resources.loadDrawable(Resources.java:2110)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.content.res.Resources.getDrawable(Resources.java:700)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:282)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:937)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.graphics.drawable.Drawable.createFromXml(Drawable.java:877)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.content.res.Resources.loadDrawable(Resources.java:2092)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.widget.ProgressBar.<init>(ProgressBar.java:294)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.widget.ProgressBar.<init>(ProgressBar.java:246)
07-02 12:33:55.008: E/AndroidRuntime(1565):     at android.widget.ProgressBar.<init>(ProgressBar.java:242)
07-02 12:33:55.008: E/AndroidRuntime(1565):     ... 28 more

错误似乎在第 78 行崩溃:setContentView(R.layout.download);

但它也引用了内存不足问题,我过去已经通过实现以下方法解决了该问题:

 @Override
        protected void onDestroy() {
        super.onDestroy();

        unbindDrawables(findViewById(R.id.ListView_layout));
        System.gc();
        }

        private void unbindDrawables(View view) {
            if (view.getBackground() != null) {
            view.getBackground().setCallback(null);
            }
            if (view instanceof ViewGroup) {
                for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
                unbindDrawables(((ViewGroup) view).getChildAt(i));
                }
            ((ViewGroup) view).removeAllViews();
            }

但是在这种情况下,应用程序在执行此操作后仍然崩溃,我不确定为什么。

来源:

http://pastebin.com/KqwhFxYk

最佳答案

只需将以下代码添加到应用程序标记中的 list 文件中: android:largeHeap="true"

当我在 android 5 或更高版本上测试我自己的应用程序时,我遇到了这个问题。

关于android - 错误膨胀类 android.widget.ProgressBar/致命强制关闭错误 - Android/Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31191940/

相关文章:

tensorflow - 获取错误 "Resource exhausted: OOM when allocating tensor with shape[1800,1024,28,28] and type float on/job:localhost/..."

matlab - Matlab 内存不足 - 如何对矩阵元素进行就地运算?

PHP : Custom error handler - handling parse & fatal errors

PHP:由于“致命”错误而突然终止请求的影响

java - 在 Android studio : Kotlin 中保存实例状态

android - 在 firebaseAuth 中获取错误 "cannot resolve symbol getInstance"

Android 应用内购买流程中断

java - 不同子串的串联

Swift Direction Request 无法在 if 语句中正确计算

android - 服务和处理程序之间的关系