不幸的是,myapp已经停止了多项活动

时间:2016-08-23 10:16:48

标签: android android-layout android-studio android-fragments

我的应用程序包含5个带有背景图像的活动,当我尝试运行它时。 我的应用程序在第三个活动中停止并显示错误"不幸的是,myapp已停止"我正在使用android studio

logcat:

08-23 05:28:10.598 3820-3820/com.example.apollo.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
                                                                            Process: com.example.apollo.myapplication, PID: 3820
                                                                            java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.apollo.myapplication/com.example.apollo.myapplication.Main3Activity}: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
                                                                                at android.app.ActivityThread.access$800(ActivityThread.java:151)
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                at android.os.Looper.loop(Looper.java:135)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:5254)
                                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                                at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
                                                                             Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
                                                                                at android.view.LayoutInflater.createView(LayoutInflater.java:633)
                                                                                at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
                                                                                at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
                                                                                at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:482)
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
                                                                                at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)
                                                                                at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
                                                                                at com.example.apollo.myapplication.Main3Activity.onCreate(Main3Activity.java:13)
                                                                                at android.app.Activity.performCreate(Activity.java:5990)
                                                                                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
                                                                                at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
                                                                                at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                at android.os.Looper.loop(Looper.java:135) 
                                                                                at android.app.ActivityThread.main(ActivityThread.java:5254) 
                                                                                at java.lang.reflect.Method.invoke(Native Method) 
                                                                                at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
                                                                             Caused by: java.lang.reflect.InvocationTargetException
                                                                                at java.lang.reflect.Constructor.newInstance(Native Method)
                                                                                at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
                                                                                at android.view.LayoutInflater.createView(LayoutInflater.java:607)
                                                                                at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55) 
                                                                                at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682) 
                                                                                at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741) 
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:482) 
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
                                                                                at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                                                                                at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                                                                at com.example.apollo.myapplication.Main3Activity.onCreate(Main3Activity.java:13) 
                                                                                at android.app.Activity.performCreate(Activity.java:5990) 
                                                                                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
                                                                                at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
                                                                                at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                at android.os.Looper.loop(Looper.java:135) 
                                                                                at android.app.ActivityThread.main(ActivityThread.java:5254) 
                                                                                at java.lang.reflect.Method.invoke(Native Method) 
                                                                                at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
                                                                             Caused by: java.lang.OutOfMemoryError: Failed to allocate a 43877388 byte allocation with 11648040 free bytes and 11MB until OOM
                                                                                at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
                                                                                at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
                                                                                at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:609)
                                                                                at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
                                                                                at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:988)
                                                                                at android.content.res.Resources.loadDrawableForCookie(Resources.java:2474)
                                                                                at android.content.res.Resources.loadDrawable(Resources.java:2381)
                                                                                at android.content.res.TypedArray.getDrawable(TypedArray.java:749)
                                                                                at android.view.View.<init>(View.java:3737)
                                                                                at android.view.ViewGroup.<init>(ViewGroup.java:497)
                                                                                at android.widget.RelativeLayout.<init>(RelativeLayout.java:248)
                                                                                at android.widget.RelativeLayout.<init>(RelativeLayout.java:244)
                                                                                at android.widget.RelativeLayout.<init>(RelativeLayout.java:240)
                                                                                at java.lang.reflect.Constructor.newInstance(Native Method) 
                                                                                at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
                                                                                at android.view.LayoutInflater.createView(LayoutInflater.java:607) 
                                                                                at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55) 
                                                                                at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682) 
                                                                                at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741) 
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:482) 
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
                                                                                at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                                                                                at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                                                                at com.example.apollo.myapplication.Main3Activity.onCreate(Main3Activity.java:13) 
                                                                                at android.app.Activity.performCreate(Activity.java:5990) 
                                                                                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
                                                                                at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
                                                                                at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                at android.os.Looper.loop(Looper.java:135) 
                                                                                at android.app.ActivityThread.main(ActivityThread.java:5254) 
                                                                                at java.lang.reflect.Method.invoke(Native Method) 
                                                                                at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

2 个答案:

答案 0 :(得分:0)

您可以使用android:largeHeap =“true”来获得更多内存

https://developer.android.com/reference/android/R.styleable.html#AndroidManifestApplication_largeHeap

答案 1 :(得分:0)

如果您有多个具有如此多图像的活动,则在大多数情况下您将遇到此错误。 要消除此类错误,您应该始终通过删除背景来释放内存。

Android为您在活动中使用的每个Image生成Bitmap,并且位图占用大量内存(生成的位图大小=高度*宽度* 8)。和android只为应用程序分配16Mb堆。您可以使用大堆但不保证您的应用程序不会再次崩溃。

android不会在销毁后释放您在活动中使用过的图像。所以如果你真的没有使用它,它将永远存在于记忆中。所以你必须用代码手动完成。 您只需在onDestroy()方法中完成任何活动后立即删除每个视图的背景,或者您可以在onStop()方法中暂停一个活动时删除背景,并在{{1}中重新分配图像方法。

您可以调用onStart()从该视图中删除后台资源。和view.setBackgroundResource(0)从该视图中删除图像资源。

另一个选项是自己生成图像位图,根据可用内存缩放位图。但我认为如果您发布图像资源,问题就会解决。