Android开关语句崩溃 [英] Android Switch Statement Crashing

查看:152
本文介绍了Android开关语句崩溃的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的android java文件中创建了一个switch语句,根据相应的'rating',交换机会将一个可绘制的文件设置为imageView。当它运行它崩溃,并说,它已经用尽了内存,但是我分配了虚拟设备3000mb,代码运行正常,直到我输入一个值为开关来比较

I created a switch statement in my android java file, the switch will set a drawable file to an imageView depending on the corresponding 'rating'. When it runs it crashes and says that it ran out of memory however I have allocated the virtual device 3000mb and the code runs fine until I input a value for the switch to compare

调试器错误消息

1752-1752/com.cs13ppz.virtualgallery E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.cs13ppz.virtualgallery, PID: 1752
    java.lang.OutOfMemoryError
            at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
            at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:594)
            at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:429)
            at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:840)
            at android.content.res.Resources.loadDrawable(Resources.java:2110)
            at android.content.res.Resources.getDrawable(Resources.java:700)
            at android.widget.ImageView.resolveUri(ImageView.java:638)
            at android.widget.ImageView.setImageResource(ImageView.java:367)
            at com.cs13ppz.virtualgallery.ArtworkLibrary.ratingBar(ArtworkLibrary.java:55)
            at com.cs13ppz.virtualgallery.ArtworkLibrary.onCreate(ArtworkLibrary.java:18)
            at android.app.Activity.performCreate(Activity.java:5231)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)

开关语句
ImageView ratingBar =(ImageView)findViewById(R.id.ratingbar);
int rating = 5;

Switch Statement ImageView ratingBar = (ImageView) findViewById(R.id.ratingbar); int rating = 5;

switch(rating){
    case 0: {
        ratingBar.setImageResource(R.drawable.star0);
    }
    case 1: {
        ratingBar.setImageResource(R.drawable.star05);
    }
    case 2: {
        ratingBar.setImageResource(R.drawable.star1);
    }
    case 3:
            ratingBar.setImageResource(R.drawable.star15);
            break;
    case 4:
            ratingBar.setImageResource(R.drawable.star2);
            break;
    case 5:
            ratingBar.setImageResource(R.drawable.star25);
            break;
    case 6:
            ratingBar.setImageResource(R.drawable.star3);
            break;
    case 7:
            ratingBar.setImageResource(R.drawable.star35);
            break;
    case 8:
            ratingBar.setImageResource(R.drawable.star4);
            break;
    case 9:
            ratingBar.setImageResource(R.drawable.star45);
            break;
    case 10:
            ratingBar.setImageResource(R.drawable.star5);
            break;
    }

所有分配给每个案例的所有图像都非常小,每个只有约15kb。我也想知道是否有更简单的方法来实现这一点?

By the way all the images that are being assigned to each case are very small, only about 15kb each. I was also wondering if there would be an easier way to implement this?

推荐答案

问题与 switch 本身,由于图像的大小,内存不足。 Android进程具有由操作系统(堆)分配给它们的最大内存量。这个记忆与设备的存储空间无关。

The problem is not related with the switch per se, you are running out of memory due to the size of your images. Android process have a maximum amount of memory allocated to them by the OS (the heap). This memory has nothing to do with the storage space of the device.

这个回答显示某些设备的堆大小。

This answer shows heap sizes for some devices.

这篇关于Android开关语句崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆