안드로이드 개발 정보
(글 수 1,064)
안녕하세요. 볼레로 입니다.
framework 소스상에 sdcard 빠지는 것에 대한 대비가 전혀 없네요.
휴대폰은 배터리를 빼야 sdcard를 뺄 수 있는 구조라고 없어도 되기 때문에 이렇게 만든 듯합니다.
뭔 framwork 가 HW 디자인 구조까지 제약이 생기도록 만들었는지 모르겠네요. ㅡ.ㅡ
혹시 안드로이드로 뭐 만들려고 하시는 분들은
꼭, sdcard 슬롯을 휴대폰처럼 배터리 아래에 넣어세요.
이렇게 안하시면 정말 많은 삽질하시거나
혹은 정말 불안한 (거의 사용못하는 OS)를 보실 수 있으실 겁니다.
젠장.......
수고하세요!
framework 소스상에 sdcard 빠지는 것에 대한 대비가 전혀 없네요.
휴대폰은 배터리를 빼야 sdcard를 뺄 수 있는 구조라고 없어도 되기 때문에 이렇게 만든 듯합니다.
뭔 framwork 가 HW 디자인 구조까지 제약이 생기도록 만들었는지 모르겠네요. ㅡ.ㅡ
혹시 안드로이드로 뭐 만들려고 하시는 분들은
꼭, sdcard 슬롯을 휴대폰처럼 배터리 아래에 넣어세요.
이렇게 안하시면 정말 많은 삽질하시거나
혹은 정말 불안한 (거의 사용못하는 OS)를 보실 수 있으실 겁니다.
젠장.......
수고하세요!
2010.03.10 16:54:37
최초의 안드로이드폰인 G1은 sd슬롯이 옆면에 있어서 언제라도 뺄 수 있는 구조입니다. 저 예전에 그냥 빼본 적 있는 것 같은데 기억이^^;;; G1 가지신 분들이 그냥 빼거나, 읽기/쓰기 중에 메모리 빼버리면 어떻게 되는지 경험담 좀 얘기해주시면 좋겠네요.
2010.03.10 17:18:59
무조건 안되는 것은 아니구요.
문제가 되는 상황은
sdcard에 음악/영화등을 다량으로 넣고,
sdcard 꼽으면 미디어 스캔을 하거든요.
이 스캔중에 그냥 뽑아 버리면 문제가 되네요.
2.1에서는 수정이 되었는지 모르겠네요 .
2.01 소스에서 테스트 하고 있거든요.
다른 궁금한 점은
안드로이드 폰중에 내장메모리에 음악 담을 수 있는 것이 있나요?
sdcard와 내장메모리 동시 지원하는 거요.
이것도 고려가 안되어 있던데요.
문제가 되는 상황은
sdcard에 음악/영화등을 다량으로 넣고,
sdcard 꼽으면 미디어 스캔을 하거든요.
이 스캔중에 그냥 뽑아 버리면 문제가 되네요.
2.1에서는 수정이 되었는지 모르겠네요 .
2.01 소스에서 테스트 하고 있거든요.
다른 궁금한 점은
안드로이드 폰중에 내장메모리에 음악 담을 수 있는 것이 있나요?
sdcard와 내장메모리 동시 지원하는 거요.
이것도 고려가 안되어 있던데요.
2010.03.10 20:30:28
PC의 USB와 같은 이치아닐까요? 데이터를 읽는 도중에 데이터가 저장된 매체를 제거한다.
처리 과정이 먼저 아닐까요? 에러가 발생하는 것은 어떻게 보면 어쩔수 없이, 당연히 발생하는 것이라 생각합니다.
읽으면서 매체 활성화를 계속 체크한다는 것은 경험적 측면에서 낭비라고 생각합니다.
SD card와 관련된 동작은 브로드캐스트로 처리하고 있는 구조구요.
음악 관련사항은 어플에서 어떻게 구현하느냐의 차이이지 프레임워크의 문제는 아니라고 생각합니다.
^^
2010.03.17 02:24:15
아시는것과 같이 SD카드의 특성상 쓰는 도중 미디어가 빠지면 SD가 쉽게 깨어집니다.
전원을 끄고 뽑거나 마운트 해제를 하고 뽑는것이 불편하긴 하지만 안정적일듯 한데요..
예외상황에 대한 처리는 개발자의 몫이 아닐까 합니다.
전원을 끄고 뽑거나 마운트 해제를 하고 뽑는것이 불편하긴 하지만 안정적일듯 한데요..
예외상황에 대한 처리는 개발자의 몫이 아닐까 합니다.
2010.03.26 21:04:35
글올리신 분이 잘못 아신듯 합니다. 저런 처리 문제는 SD카드 본질적인 문제입니다. 컴퓨터에서도 저러면 반반 입니다. 깨져서 못쓰던가, 깨지더라도 이전 상태로 복구 하던가. SD카드 만이 아니라 대부분 Flash 메모리에서는 쓰기 지연이 있어서 쓰는중에 빼면 문제가 발생합니다. 그래서 USB 안전 제거같은게 있는거죠 ..
2010.05.28 14:43:47
볼레로님이 말씀하신건 SDCard제거시 MediaScanning관련 오류를 말씀하시는걸 껍니다.
이미 동작중인 App에게 있어서 sdcard가 빠지면, BAD_REMOVAL부터 EJECT 그리고 volumeMgr이 핸들을 체크해서 unmounted절차를 밟는데요. 각 App들은 해당 intent를 받아서 미리 종료절차를 가지면 됩니다.
그러나, Framework단에 있는 MediaScanner는 다릅니다. 이놈은 중간에 스톱을 하려면 예외상황이 발생할수밖에 없는 구조로 되어있거든요. 2.1에서도 마찬가지고.. 해당 구조가 2.2에서 수정되었으리라고는 ... 잘 모르겠습니다. 구조자체가 하나의 function에서 모든 filesystem을 scan하는 구조라 그렇습니다.
근데.. 이 부분도 어찌보면... sdcard만을 지원하는 Android 구조에서는 괜찮은거 같습니다. 어차피 scanning대상이 sdcard고 이게 빠졌을때 오류가 발생해도 다시 넣으면 다시 scan하니깐요~~~