안드로이드에서는 데이터 저장을 어떻게 하는지 알아볼께요

 일단 설정정보 같은걸 저장하는 Preferences에 대한거에요
 원래 content provider의 데이터 모델 예제부터 해보려 그랬는데 전화번호부를 이용한 예제에는 문제가 있어서 넘어갔어요.
 안드로이드에서 전화번호부는 google, 페이스북 exchange등 여러곳에서 sync를 해서 만들어지는데 예전 Api를 사용하면
sync를 한 후에 서로 섞여버리는 문제가 발생할 수 있데요. 

 MediaStore content provider도 있는데 기본적으로 오디오, 동영상, 이미지 타입의 데이터를 지원해요. 근데 얘는 이미지나 음악
을 그때그때 접근하지는 않아요. 뭔가 변화가 있을 때 scanning을 해서 DB에 저장하죠. 그리고 이미지가 큰 것은 sumnail을 미리
만들어서 접근하게 해주고요.





Preferences에 대한 정보는 SDcard에 xml 파일로 저장되요.
 Preferences는 특정 App 안에서만 쓰이는 거에요. 간단한 데이터들(long, String)을 쉽게 저장해주죠. sd card의 각 저장소안에
xml파일로 저장이 되죠. 사용자의 설정값을 주로 저장해요.





EditView에 사용자가 적어놨던 걸 Preferences로 저장한 후 다시 보여주는 예제에요. 저장할 때는 마지막에 꼭 commit을 해야한다는
걸 잊지 마세요.
 세가지 API를 사용하는데요
 getPreferences() 는 한 Activity 안에서만 설정할수 있죠.
 getSharedPreferences() 는 다른 Activity 간에 공유도 가능하게 해요.
 getDefaultSharedPreferences() 는 안드로이드 전체에서 사용하는 공통 설정정보를 가져올수 있게하죠.
 즉, 위에 3가지 호출방식에 따라서 xml의 다른 파일에 저장된다는 뜻이에요.
 Get / Put 메소드를 이용해서 설정에 데이터를 넣거나 빼는게 가능해요.
 그리고 주로 App가 강제로 종료하기전에 설정정보에 저장하고 (onPause()),
다시 시작했을 때 저장된 설정정보를 찾아서 사용해요. (onResume()).







 이번에는 SDcard 또는 내장메모리에 파일을 어떻게 저장하는 지 알아볼께요
 안드로이드에서 파일을 접근할 때는 자바에서의 stream을 그대로 사용해요. input/output stream은 동일하지만 그냥
파일 input output으로 생성하는건 아니죠. 하지만 단말 상의 메인 메모리나 SD카드에서 저장될 때의 저장하는 방식은 서로 달라요.
 안드로이드는 리눅스 기반이기 때문에 내장메모리는 사용자 별로 접근이 가능하죠. 내장메모리에 있는 건 다른 App는 볼수 없다는
말이에요. App마다 사용자 id가 할당이 되기 때문이죠. 그래서 A가 만든 파일은 B가 볼수 없어요. 하지만 SD카드에 저장되면 볼수있죠
 그래서 내장메모리의 openFileOutput() 은 App만 접근할 수 있는 공간을 접근하는 거죠.  
 리소스에 있는 파일은 App에서 수정될수 없고 읽을 수만 있다는걸 기억하세요. 
 SD card에 데이터를 저장하면 공간활용에 좋아서 권한 을 주는데요 SD카드는 보안이 적용안되기 때문에 안전하지 않아요. 그래서
동영상, 이미지등 보안이 중요하지 않은 것들이 주로 저장되죠. FileOutputStream() 은 SD카드에만 적용되는 거에요.
 그리고 파일접근 권한 지정시 EXTERNAL_STORAGE 라고 보통 해주는데 이게 꼭 SD card를 말하는 건 아니에요.
 
 SD카드에 데이터 저장할때 주의할 것 3가지는 manifest 파일에 퍼미션 주는거, 파일 객체 생성할 때 디렉터리 이름을 sdcard로
하는거, 그리고 path 쓸때 폴더 path만 기억해서 써준다는 거에요.









신고

'T아카데미' 카테고리의 다른 글

트위터 어플개발의 시작  (0) 2010.07.08
쓰레드와 에니메이션  (0) 2010.07.07
데이터 저장 기초  (0) 2010.07.03
메뉴  (0) 2010.07.03
사용자인터페이스_02  (0) 2010.07.02
사용자인터페이스_02  (0) 2010.07.01
Posted by 응큼미소


티스토리 툴바