반응형
안드로이드, Data 안전하게 저장하기. |
SharedPreference 와 SQLite 만 사용한다면 별로 걱정할 일이 없다.
만약 File I/O API 를 직접 이용하면 문제가 된다.
ext4 파일 시스템은 YAFFS ( 과거 안드로이드가 채택한 파일 시스템 ) 에 비해 훨씬 적극적으로 버퍼를 활용한다. 따라서 write() 와 close() 메서드를 호출했다고 해서 데이터가 실제 플래쉬 메모리에 저장되었다고 단언할 수 없다.
따라서 데이터를 저장할 때는 RandomAccessFile 의 synchronous 모드를 사용하는 것이 좋다. 이렇게 사용하면 내부적으로 fsync() 를 호출한다.
FileOutputStream 을 사용하게 되면 다음과 같이 sync 를 시켜주어야 한다.
public static boolean sync(FileOutputStream stream) {
try {
if (stream != null) {
stream.getFD().sync();
}
return true;
}
catch (IOException e) { }
return false;
}
여기서 단점은, sync() 를 사용하면 performance 이슈가 생기기 쉽고, 간혹가다가는 엄청난 속도 차를 내기도 한다. 이 점을 주의해서 사용해야 한다.
반응형
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[java] 자바 환경변수 설정 방법. (0) | 2013.09.26 |
---|---|
[android] how to improve the performance of WebView (0) | 2013.09.26 |
[android] how to remove extra padding( or margin ) in the GridView (0) | 2013.09.24 |
[Java] JDBC, Database Stored Procedure 와 CallableStatement (0) | 2013.09.24 |
[android] 안드로이드 개발 10계명 (2) | 2013.09.24 |
댓글