정기적으로 정보를 외부 서버로 보내는 응용 프로그램을 개발 중입니다. 나는 백업 목적으로 전송되는 데이터의 로컬 복사본을 만듭니다.안드로이드 데이터 스토리지 - 파일 대 SQLite
배터리 수명을 절약하기 위해 데이터를 저장하는 가장 좋은 방법은 무엇입니까? 각 데이터 제출은 약 5K-10K의 직렬화 된 객체입니다 (이 클래스에는 날짜, 숫자 및 문자열을 포함한 5 개의 필드가 있음).
다른 아이디어가 있습니까?
정기적으로 정보를 외부 서버로 보내는 응용 프로그램을 개발 중입니다. 나는 백업 목적으로 전송되는 데이터의 로컬 복사본을 만듭니다.안드로이드 데이터 스토리지 - 파일 대 SQLite
배터리 수명을 절약하기 위해 데이터를 저장하는 가장 좋은 방법은 무엇입니까? 각 데이터 제출은 약 5K-10K의 직렬화 된 객체입니다 (이 클래스에는 날짜, 숫자 및 문자열을 포함한 5 개의 필드가 있음).
다른 아이디어가 있습니까?
배터리 수명을 직접 알 수는 없지만 하나의 기준으로 관리하기가 쉽습니다. 데이터를 관리하는 작업이 적어지면 CPU주기가 줄어들고 배터리 수명이 연장됩니다.
나는 SQLite 옵션이 더 쉽다고 말할 것이다. 더 이상 필요하지 않은 오래된 제출물을 제거하는 데이터를 저장하는 SQLite 테이블에 날짜 열을 추가 할 수 있으며 모든 것이 원시 SQL 라이브러리를 통해 처리됩니다. 자신의 자바 코드로 파일의 전체로드 (또는 단일 파일의 악화)를 관리하는 것이 훨씬 더 많은 작업이 될 것입니다.
또한 데이터베이스에 데이터를 쓸 수 있으며 다시 읽어야 할 때까지 잊어 버릴 수 있습니다. 파일에 데이터를 저장하는 경우 Android application life cycle이라는 용어로 파일을 읽고 쓰는 중 일해야합니다. 배터리 걱정이된다면 파일을 자주 쓰기보다 메모리에 저장하는 것이 더 바람직하지 않지만 앱이 일시 중지 또는 삭제되었을 때 데이터가 손실되지 않았는지 확인해야합니다 . 내 의견으로는 SQLite 데이터베이스를 사용하는 것이 훨씬 쉽고 이것에 대해 걱정하지 않아도됩니다.
SQLite db는 단순히 시스템의 파일이므로 (/data/data/<your_package>/databases/
에 저장 됨) SQLite 또는 File을 사용하는지 여부는 중요하지 않다고 생각합니다. 적시에 하드 드라이브에 파일을 저장하는 것과 마찬가지로 적절한시기에 db에 커밋해야합니다. 즉, 한 가지 방법 또는 다른 방법으로 많은 하드 드라이브 쓰기를 사용할 수 있습니다.
내가 선택한 것은 어떤 종류의 데이터를 저장하는지에 달려 있다고 생각합니다. DB를 가질 수있는 능력 (예 : 질의)이 필요하다면, 반드시 SQLite를 사용하십시오. 그러나 db가 필요하지 않거나 격렬한 데이터가있는 경우 (그리고 관계형 데이터베이스에서 쉽게 설정할 수없는 경우) 파일을 가지고 갈 것입니다.
확실히 말해 줄 수있는 점은 이 아니라은 파일 저장에 직렬화를 사용하는 것입니다. Android 직렬화는 느리거나 느리거나 느리며 대용량 파일을 만듭니다. 성능상의 이유로 자체 XML 또는 JSON 형식을 작성하는 것이 훨씬 좋습니다.
응용 프로그램이 멀티 스레드입니까? 데이터 저장소에 액세스하는 스레드가 여러 개인 경우 SQLite를 사용합니다. SQLite가 잠금 문제에 대해 걱정할 수있게하십시오.
일부 플랫폼에서는 SQLite가 스레드로부터 안전하지 않습니다 (Xamarin). – nVentimiglia
의견을 보내 주셔서 감사합니다. 매우 합리적인 것처럼 보입니다. 데이터베이스가 항상 백그라운드에서 (전통적인 데이터베이스처럼) 실행되고 있는지 또는 애플리케이션이 그것을 사용할 때만 실행 중인지 알고 있습니까? 제 말은 "SQLite 서버"(안드로이드에 그러한 프로세스가있는 경우)가 제 응용 프로그램 때문에 시작된다는 것입니다. 아마 좋은 생각이 아닐 수도 있습니다. –
afaik sqlite는 라이브러리를 통해 액세스하는 파일 일 뿐이며 실행중인 데이터베이스 서버는 없습니다. – tosh