引起:java.lang.OutOfMemoryError(开始新的活动)(Caused by: java.lang.OutOfMemoryError (starting new Activity))

编程入门 行业动态 更新时间:2024-10-22 04:47:20
引起:java.lang.OutOfMemoryError(开始新的活动)(Caused by: java.lang.OutOfMemoryError (starting new Activity))

我的应用程序包含5个以上的背景服务活动。 当我运行该应用程序,并点击一个按钮来创建第二个活动时,该应用程序崩溃。

谢谢你的帮助。

我的XML布局:

这是我的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

My application contains more than 5 activities with backgrounds services. When I run the app and I click on a button to create the second Activity, the app crashes.

Thanks for any help.

my xml layout :

Here is my 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

最满意答案

您的背景图片的文件太大。 我不知道你的结构是什么样子,但gogo1应该根据屏幕尺寸有几种不同的分辨率。 不仅如此,它还应该进行移动优化,以便能够高效地加载(并避免内存不足异常)。

如果您必须加载图像并且无法压缩文件大小,那么您唯一的选择就是在将drawable压缩到不会导致内存不足异常的大小后以编程方式设置背景。

我的建议是修复gogo1因此图像针对不同的屏幕尺寸进行了优化,并确保它的文件大小不超过〜100kb(甚至是过度杀伤)。

Your background image's file size is too large. I don't know what your structure looks like but gogo1 should probably have several different resolutions based on screen sizes. Not only that but it should be mobile optimized so that it can be loaded efficiently (and avoid out of memory exceptions).

If you must load the image and cannot compress the file size then your only option would be to set the background programmatically after compressing the drawable to a size that won't cause an out of memory exception.

My recommendation is fix gogo1 so the image is optimized for different screen sizes and also make sure it's file size is no more than ~100kb (and even that is overkill).

更多推荐

本文发布于:2023-08-06 07:59:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1446052.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:OutOfMemoryError   lang   java   Activity   starting

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!