마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

setBackgroundResource를 하는데 특정 이미지에서 크래시가 뜹니다

0 추천
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".main"
    android:background="@drawable/background">

    <Button
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:id="@+id/light0"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>
 
 
 
public class main extends AppCompatActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button BUTTON_light0 = (Button) findViewById(R.id.light0);
        BUTTON_light0.setBackgroundResource(R.drawable.on);
        BUTTON_light0.setBackgroundResource(R.drawable.off);
    }
}

다른 이미지는 상관없는데 on.png를 setBackgroundResource하면 크래시가 됩니다. 무엇이 문제일까요?

11-06 19:50:12.978 6269-6269/? E/AndroidRuntime: FATAL EXCEPTION: main
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime: Process: com.example.kimseonho.lab_01, PID: 6269
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime: java.lang.OutOfMemoryError: Failed to allocate a 21233676 byte allocation with 4194304 free bytes and 8MB until OOM
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:609)
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1080)
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at android.content.res.Resources.loadDrawableForCookie(Resources.java:2635)
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at android.content.res.Resources.loadDrawable(Resources.java:2540)
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at android.content.res.Resources.getDrawable(Resources.java:806)
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at android.content.Context.getDrawable(Context.java:458)
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at android.view.View.setBackgroundResource(View.java:17202)
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at android.support.v7.widget.AppCompatButton.setBackgroundResource(AppCompatButton.java:76)
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at com.example.kimseonho.lab_01.main.onCreate(main.java:18)
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at android.app.Activity.performCreate(Activity.java:6237)
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at android.app.ActivityThread.-wrap11(ActivityThread.java)
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102)
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:148)
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5417)
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
11-06 19:50:12.978 6269-6269/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

mmmmm5 (140 포인트) 님이 2015년 11월 6일 질문
mmmmm5님이 2015년 11월 6일 수정

1개의 답변

0 추천
오류 로그를 올려야 무슨 오류인지 알겠지요
aucd29 (218,390 포인트) 님이 2015년 11월 6일 답변
죄송합니다 미처 생각 하지 못했습니다. 본문에 업데이트 하겠습니다.
아웃 오브 메모리 인것이 사진 이미지를 줄이고 넣어보세요
...