안녕하세요, 앱개발 중에 문제가 있어서 질문을 올려봅니다.


갤러리에서 사진을 크롭(crop)한 후 SD카드에 temp.jpg로 출력해서 


액티비티로 복귀했을때 ImageView로 표시하려고 하는데


Crop 했을때 갤러리가 Out of memory를 뿜어내면서 바로 죽어버립니다.


Crop 옵션을 뺏을때는 아예 임시파일로 복사도 되질 않습니다;



아래는 갤러리 호출하는 소스 부분입니다.


 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        Button bt = (Button) findViewById(R.id.button);
 
        bt.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(
                        Intent.ACTION_GET_CONTENT,      // 또는 ACTION_PICK
                        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                intent.setType("image/*");              // 모든 이미지
                intent.putExtra("crop", "true");        // Crop기능 활성화
                intent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri());     // 임시파일 생성
                intent.putExtra("outputFormat",         // 포맷방식
                        Bitmap.CompressFormat.JPEG.toString());
 
                startActivityForResult(intent, REQ_CODE_PICK_IMAGE);
                // REQ_CODE_PICK_IMAGE == requestCode
            }
        });
 
    }


getTempUri() 메소드는 SD카드영역에 temp.jpg 라는 파일을 생성한 후 URI를 반환하는 메소드라서 여기에는

문제가 없습니다. (URI 경로는 잘 반환됩니다.)

 

아래는 로그캣입니다.

 06-06 11:57:45.468: D/dalvikvm(26622): GC_FOR_ALLOC freed 255K, 10% free 18258K/20103K, paused 17ms
06-06 11:57:45.472: I/dalvikvm-heap(26622): Grow heap (frag case) to 18.371MB for 530448-byte allocation
06-06 11:57:45.496: D/dalvikvm(26622): GC_FOR_ALLOC freed <1K, 10% free 18776K/20679K, paused 15ms
06-06 11:57:45.515: D/skia(26622): WARNING: One-shot allocator has already allocated (alloc count = 1)
06-06 11:57:51.273: D/dalvikvm(26622): GC_FOR_ALLOC freed 632K, 11% free 18531K/20679K, paused 21ms
06-06 11:57:51.293: I/ActivityManager(150): Process com.show.mini (pid 26333) has died.
06-06 11:57:51.312: I/ActivityManager(150): Process com.google.android.apps.maps (pid 26296) has died.
06-06 11:57:51.328: I/ActivityManager(150): Process com.jihyung.android.test (pid 26478) has died.
06-06 11:57:51.363: I/ActivityManager(150): Process com.kakao.talk (pid 16522) has died.
06-06 11:57:51.363: W/ActivityManager(150): Scheduling restart of crashed service com.kakao.talk/.service.MessengerService in 5000ms
06-06 11:57:51.363: I/WindowManager(150): WIN DEATH: Window{41902640 com.kakao.talk/com.kakao.talk.activity.friend.FriendsListActivity paused=false}
06-06 11:57:51.371: I/WindowManager(150): WIN DEATH: Window{4185a3f8 com.kakao.talk/com.kakao.talk.activity.main.MainTabActivity paused=false}
06-06 11:57:51.386: I/dalvikvm-heap(26622): Grow heap (frag case) to 36.880MB for 19660816-byte allocation
06-06 11:57:51.422: D/dalvikvm(26622): GC_FOR_ALLOC freed 7K, 6% free 37723K/39943K, paused 26ms
06-06 11:57:51.488: D/dalvikvm(26622): GC_CONCURRENT freed <1K, 6% free 37727K/39943K, paused 2ms+9ms
06-06 11:57:52.007: D/skia(26622): WARNING: One-shot allocator has already allocated (alloc count = 1)
06-06 11:57:52.027: D/dalvikvm(26622): GC_FOR_ALLOC freed <1K, 6% free 37726K/39943K, paused 16ms
06-06 11:57:52.027: I/dalvikvm-heap(26622): Forcing collection of SoftReferences for 19499536-byte allocation
06-06 11:57:52.054: D/dalvikvm(26622): GC_BEFORE_OOM freed 9K, 6% free 37716K/39943K, paused 29ms
06-06 11:57:52.054: E/dalvikvm-heap(26622): Out of memory on a 19499536-byte allocation.
06-06 11:57:52.054: I/dalvikvm(26622): "thread-pool-2" prio=5 tid=13 RUNNABLE
06-06 11:57:52.054: I/dalvikvm(26622):   | group="main" sCount=0 dsCount=0 obj=0x41a9a590 self=0x616f68
06-06 11:57:52.054: I/dalvikvm(26622):   | sysTid=26639 nice=10 sched=0/0 cgrp=bg_non_interactive handle=5063392
06-06 11:57:52.058: I/dalvikvm(26622):   | schedstat=( 0 0 0 ) utm=49 stm=5 core=0
06-06 11:57:52.058: I/dalvikvm(26622):   at android.graphics.BitmapRegionDecoder.nativeDecodeRegion(Native Method)
06-06 11:57:52.062: I/dalvikvm(26622):   at android.graphics.BitmapRegionDecoder.decodeRegion(BitmapRegionDecoder.java:186)
06-06 11:57:52.066: I/dalvikvm(26622):   at com.android.gallery3d.app.CropImage.getCroppedImage(CropImage.java:611)
06-06 11:57:52.066: I/dalvikvm(26622):   at com.android.gallery3d.app.CropImage.access$300(CropImage.java:79)
06-06 11:57:52.066: I/dalvikvm(26622):   at com.android.gallery3d.app.CropImage$SaveOutput.run(CropImage.java:259)
06-06 11:57:52.066: I/dalvikvm(26622):   at com.android.gallery3d.app.CropImage$SaveOutput.run(CropImage.java:235)
06-06 11:57:52.066: I/dalvikvm(26622):   at com.android.gallery3d.util.ThreadPool$Worker.run(ThreadPool.java:124)
06-06 11:57:52.074: I/dalvikvm(26622):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
06-06 11:57:52.074: I/dalvikvm(26622):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
06-06 11:57:52.078: I/dalvikvm(26622):   at java.lang.Thread.run(Thread.java:856)
06-06 11:57:52.078: I/dalvikvm(26622):   at com.android.gallery3d.util.PriorityThreadFactory$1.run(PriorityThreadFactory.java:43)
06-06 11:57:52.078: A/libc(26622): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1)
06-06 11:57:52.500: I/DEBUG(77): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
06-06 11:57:52.504: I/DEBUG(77): Build fingerprint: 'google/soju/crespo:4.0.4/IMM76D/299849:user/release-keys'
06-06 11:57:52.504: I/DEBUG(77): pid: 26622, tid: 26639  >>> com.google.android.gallery3d:crop <<<
06-06 11:57:52.504: I/DEBUG(77): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
06-06 11:57:52.507: I/DEBUG(77):  r0 00000000  r1 41d9d390  r2 0000272c  r3 00000000
06-06 11:57:52.507: I/DEBUG(77):  r4 41d9d350  r5 00000000  r6 00000780  r7 000027ac
06-06 11:57:52.507: I/DEBUG(77):  r8 00002800  r9 000000ff  10 000009eb  fp 40695f38
06-06 11:57:52.507: I/DEBUG(77):  ip 40756df0  sp 52b90130  lr 406ccbd0  pc 4009dbc0  cpsr 28000010
06-06 11:57:52.511: I/DEBUG(77):  d0  ff2a241fff26201b  d1  ff2e2521ff2e2521
06-06 11:57:52.511: I/DEBUG(77):  d2  ff312824ff302723  d3  ff3c312dff372c28
06-06 11:57:52.519: I/DEBUG(77):  d4  ff473e3aff433a36  d5  ff7e7268ff5e5248
06-06 11:57:52.519: I/DEBUG(77):  d6  ff958575ff918171  d7  ffa28979ff9d8474
06-06 11:57:52.519: I/DEBUG(77):  d8  000009f83f000000  d9  409e020000000000
06-06 11:57:52.523: I/DEBUG(77):  d10 0000000000000000  d11 0000000000000000
06-06 11:57:52.523: I/DEBUG(77):  d12 0000000000000000  d13 0000000000000000
06-06 11:57:52.523: I/DEBUG(77):  d14 0000000000000000  d15 0000000000000000
06-06 11:57:52.523: I/DEBUG(77):  d16 0000000000000000  d17 0000000000000000
06-06 11:57:52.523: I/DEBUG(77):  d18 0000000000000000  d19 0000000000000000
06-06 11:57:52.523: I/DEBUG(77):  d20 3ff0000000000000  d21 8000000000000000
06-06 11:57:52.523: I/DEBUG(77):  d22 0000000000000000  d23 ffff492effff492e
06-06 11:57:52.523: I/DEBUG(77):  d24 0001c5a20001c5a2  d25 000166e9000166e9
06-06 11:57:52.535: I/DEBUG(77):  d26 0000000200000002  d27 0000000000000000
06-06 11:57:52.535: I/DEBUG(77):  d28 09dac00009d44000  d29 3ff0000000000000
06-06 11:57:52.535: I/DEBUG(77):  d30 0000000000000000  d31 3ff0000000000000
06-06 11:57:52.535: I/DEBUG(77):  scr 20000013
06-06 11:57:53.132: I/DEBUG(77):          #00  pc 0000dbc0  /system/lib/libc.so (memcpy)
06-06 11:57:53.132: I/DEBUG(77):          #01  pc 00096bcc  /system/lib/libskia.so
06-06 11:57:53.136: I/DEBUG(77):          #02  pc 0007743c  /system/lib/libskia.so (_ZNK6SkDraw10drawBitmapERK8SkBitmapRK8SkMatrixRK7SkPaint)
06-06 11:57:53.136: I/DEBUG(77): code around pc:
06-06 11:57:53.136: I/DEBUG(77): 4009dba0 3a000009 f5d1f080 f5d1f0c0 f5d1f100  ...:............
06-06 11:57:53.136: I/DEBUG(77): 4009dbb0 f421020d f421420d f5d1f100 e2522040  ..!..B!.....@ R.
06-06 11:57:53.136: I/DEBUG(77): 4009dbc0 f400022d f400422d 2afffff8 e2822040  -...-B.....*@ ..
06-06 11:57:53.140: I/DEBUG(77): 4009dbd0 e2522020 3a000003 f421020d e2522020    R....:..!.  R.
06-06 11:57:53.140: I/DEBUG(77): 4009dbe0 f400022d 2afffffb e2822020 e3120010  -......*  ......
06-06 11:57:53.140: I/DEBUG(77): code around lr:
06-06 11:57:53.140: I/DEBUG(77): 406ccbb0 e590b018 e0855002 e0834004 e1a00005  .....P...@......
06-06 11:57:53.140: I/DEBUG(77): 406ccbc0 e1a01004 e1a0200a e1a03009 e12fff3b  ..... ...0..;./.
06-06 11:57:53.140: I/DEBUG(77): 406ccbd0 e2566001 e0855007 e0844008 1afffff6  .`V..P...@......
06-06 11:57:53.140: I/DEBUG(77): 406ccbe0 e8bd8ff8 e92d4ff0 e1a04000 e5900004  .....O-..@......
06-06 11:57:53.144: I/DEBUG(77): 406ccbf0 e1a0e101 e5948008 e24dd014 e594c00c  ..........M.....
06-06 11:57:53.144: I/DEBUG(77): stack:
06-06 11:57:53.144: I/DEBUG(77):     52b900f0  00000000  
06-06 11:57:53.144: I/DEBUG(77):     52b900f4  00000000  
06-06 11:57:53.144: I/DEBUG(77):     52b900f8  40756de0  /system/lib/libskia.so
06-06 11:57:53.144: I/DEBUG(77):     52b900fc  52b902ec  
06-06 11:57:53.144: I/DEBUG(77):     52b90100  40756de0  /system/lib/libskia.so
06-06 11:57:53.148: I/DEBUG(77):     52b90104  406ccff4  /system/lib/libskia.so
06-06 11:57:53.156: I/DEBUG(77):     52b90108  40756de0  /system/lib/libskia.so
06-06 11:57:53.156: I/DEBUG(77):     52b9010c  52b9045c  
06-06 11:57:53.156: I/DEBUG(77):     52b90110  52b902ec  
06-06 11:57:53.156: I/DEBUG(77):     52b90114  000000ff  
06-06 11:57:53.156: I/DEBUG(77):     52b90118  004d8548  [heap]
06-06 11:57:53.156: I/DEBUG(77):     52b9011c  406cd1d0  /system/lib/libskia.so
06-06 11:57:53.160: I/DEBUG(77):     52b90120  39323939  
06-06 11:57:53.160: I/DEBUG(77):     52b90124  52b904f8  
06-06 11:57:53.160: I/DEBUG(77):     52b90128  df0027ad  
06-06 11:57:53.160: I/DEBUG(77):     52b9012c  00000000  
06-06 11:57:53.160: I/DEBUG(77): #00 52b90130  00000000  
06-06 11:57:53.160: I/DEBUG(77):     52b90134  406ccbd0  /system/lib/libskia.so
06-06 11:57:53.160: I/DEBUG(77): #01 52b90138  000009eb  
06-06 11:57:53.160: I/DEBUG(77):     52b9013c  004d8548  [heap]
06-06 11:57:53.160: I/DEBUG(77):     52b90140  00000780  
06-06 11:57:53.160: I/DEBUG(77):     52b90144  52b9045c  
06-06 11:57:53.164: I/DEBUG(77):     52b90148  52b9041c  
06-06 11:57:53.164: I/DEBUG(77):     52b9014c  52b902ec  
06-06 11:57:53.164: I/DEBUG(77):     52b90150  fffffff8  
06-06 11:57:53.164: I/DEBUG(77):     52b90154  52b904f8  
06-06 11:57:53.164: I/DEBUG(77):     52b90158  00000000  
06-06 11:57:53.164: I/DEBUG(77):     52b9015c  406ad440  /system/lib/libskia.so
06-06 11:57:54.722: I/BootReceiver(150): Copying /data/tombstones/tombstone_09 to DropBox (SYSTEM_TOMBSTONE)
06-06 11:57:54.840: D/dalvikvm(150): GC_FOR_ALLOC freed 2101K, 19% free 17557K/21447K, paused 89ms
06-06 11:57:54.871: I/WindowManager(150): WIN DEATH: Window{4186e068 SurfaceView paused=false}
06-06 11:57:54.871: I/ActivityManager(150): Process com.google.android.gallery3d:crop (pid 26622) has died.
06-06 11:57:54.871: W/ActivityManager(150): Force removing ActivityRecord{4190c9f8 com.google.android.gallery3d/com.android.gallery3d.app.CropImage}: app died, no saved state
06-06 11:57:54.882: I/WindowManager(150): WIN DEATH: Window{4174c378 com.google.android.gallery3d/com.android.gallery3d.app.CropImage paused=false}
06-06 11:57:54.890: I/WindowManager(150): WIN DEATH: Window{419b2f28 com.google.android.gallery3d/com.android.gallery3d.app.CropImage paused=false}

 

 

 

단 몇줄 사이에 저렇게 문제가 발생하니 답답해서 미칠노릇입니다. ㅠ

기종은 넥서스 S입니다.

 

분명 예전에는 저 소스가 아무 문제없이 잘 동작했었습니다... 근데 지금은 안되네요 ㅠ

조언 좀 부탁드립니다.