有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓是由java引起的。lang.OutOfMemoryError(启动新活动)

我的应用程序包含5个以上带有后台服务的活动。当我运行应用程序并点击按钮创建第二个活动时,应用程序崩溃

谢谢你的帮助

我的xml布局: enter image description here

以下是我的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}: 安卓.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
                                                                           at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)
                                                                           at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2099)
                                                                           at 安卓.app.ActivityThread.access$600(ActivityThread.java:138)
                                                                           at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
                                                                           at 安卓.os.Handler.dispatchMessage(Handler.java:99)
                                                                           at 安卓.os.Looper.loop(Looper.java:137)
                                                                           at 安卓.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.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798)
                                                                           at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:565)
                                                                           at dalvik.system.NativeStart.main(Native Method)
                                                                        Caused by: 安卓.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
                                                                           at 安卓.view.LayoutInflater.createView(LayoutInflater.java:613)
                                                                           at com.安卓.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
                                                                           at 安卓.view.LayoutInflater.onCreateView(LayoutInflater.java:660)
                                                                           at 安卓.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685)
                                                                           at 安卓.view.LayoutInflater.inflate(LayoutInflater.java:466)
                                                                           at 安卓.view.LayoutInflater.inflate(LayoutInflater.java:396)
                                                                           at 安卓.view.LayoutInflater.inflate(LayoutInflater.java:352)
                                                                           at 安卓.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)
                                                                           at 安卓.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
                                                                           at com.example.apollo.arrroo.Main2Activity.onCreate(Main2Activity.java:11)
                                                                           at 安卓.app.Activity.performCreate(Activity.java:5254)
                                                                           at 安卓.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1082)
                                                                           at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2038)
                                                                           at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2099) 
                                                                           at 安卓.app.ActivityThread.access$600(ActivityThread.java:138) 
                                                                           at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1205) 
                                                                           at 安卓.os.Handler.dispatchMessage(Handler.java:99) 
                                                                           at 安卓.os.Looper.loop(Looper.java:137) 
                                                                           at 安卓.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.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798) 
                                                                           at com.安卓.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 安卓.view.LayoutInflater.createView(LayoutInflater.java:587)
                                                                           at com.安卓.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
                                                                           at 安卓.view.LayoutInflater.onCreateView(LayoutInflater.java:660) 
                                                                           at 安卓.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685) 
                                                                           at 安卓.view.LayoutInflater.inflate(LayoutInflater.java:466) 
                                                                           at 安卓.view.LayoutInflater.inflate(LayoutInflater.java:396) 
                                                                           at 安卓.view.LayoutInflater.inflate(LayoutInflater.java:352) 
                                                                           at 安卓.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                                                                           at 安卓.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                                                           at com.example.apollo.arrroo.Main2Activity.onCreate(Main2Activity.java:11) 
                                                                           at 安卓.app.Activity.performCreate(Activity.java:5254) 
                                                                           at 安卓.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1082) 
                                                                           at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2038) 
                                                                           at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2099) 
                                                                           at 安卓.app.ActivityThread.access$600(ActivityThread.java:138) 
                                                                           at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1205) 
                                                                           at 安卓.os.Handler.dispatchMessage(Handler.java:99) 
                                                                           at 安卓.os.Looper.loop(Looper.java:137) 
                                                                           at 安卓.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.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798) 
                                                                           at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:565) 
                                                                           at dalvik.system.NativeStart.main(Native Method) 
                                                                        Caused by: java.lang.OutOfMemoryError
                                                                           at 安卓.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
                                                                           at 安卓.graphics.BitmapFactory.decodeStream(BitmapFactory.java:500)
                                                                           at 安卓.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:353)
                                                                           at 安卓.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:781)
                                                                           at 安卓.content.res.Resources.loadDrawable(Resources.java:1969)
                                                                           at 安卓.content.res.TypedArray.getDrawable(TypedArray.java:601)
                                                                           at 安卓.view.View.<init>(View.java:3348)
                                                                           at 安卓.view.View.<init>(View.java:3285)
                                                                           at 安卓.view.ViewGroup.<init>(ViewGroup.java:421)
                                                                           at 安卓.widget.RelativeLayout.<init>(RelativeLayout.java:187)
                                                                           at java.lang.reflect.Constructor.constructNative(Native Method) 
                                                                           at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 
                                                                           at 安卓.view.LayoutInflater.createView(LayoutInflater.java:587) 
                                                                           at com.安卓.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
                                                                           at 安卓.view.LayoutInflater.onCreateView(LayoutInflater.java:660) 
                                                                           at 安卓.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685) 
                                                                           at 安卓.view.LayoutInflater.inflate(LayoutInflater.java:466) 
                                                                           at 安卓.view.LayoutInflater.inflate(LayoutInflater.java:396) 
                                                                           at 安卓.view.LayoutInflater.inflate(LayoutInflater.java:352) 
                                                                           at 安卓.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                                                                           at 安卓.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                                                           at com.example.apollo.arrroo.Main2Activity.onCreate(Main2Activity.java:11) 
 // even more

共 (2) 个答案

  1. # 1 楼答案

    我解决了由于大图像(jpeg)而导致内存不足的问题,您必须使用FormatFactory软件。首先你会在左边看到:(图片)点击它并选择:all to jpg-&-点击输出设置&;选择(最大宽度1024最大高度768)&;最后点击添加文件,从桌面选择你的图片,然后点击确定。点击开始

  2. # 2 楼答案

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

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

    我的建议是修复gogo1,这样图像就可以针对不同的屏幕大小进行优化,同时还要确保它的文件大小不超过~100kb(即使这样也太过分了)