문제

외부 서버에 주기적으로 정보를 보내는 애플리케이션을 개발 중입니다.백업 목적으로 전송되는 데이터의 로컬 복사본을 만듭니다.

데이터를 저장하는 가장 좋은 옵션은 무엇입니까 배터리 수명 절약 측면에서?각 데이터 제출은 약 5K-10K의 직렬화된 객체입니다(클래스에는 날짜, 숫자 및 문자열을 포함하여 5개의 필드가 있음).

다른 아이디어는 없나요?

도움이 되었습니까?

해결책

배터리 수명 측면에서 직접적으로는 모르겠지만 관리하기 더 쉬운 기준은 무엇입니까?데이터 관리 작업이 적다는 것은 CPU 주기가 줄어들고 결과적으로 배터리 수명이 길어진다는 것을 의미합니다.

SQLite 옵션이 더 쉽다고 말하고 싶습니다.더 이상 필요하지 않은 오래된 제출물을 쉽게 제거할 수 있도록 데이터를 저장하는 SQLite 테이블에 날짜 열을 넣을 수 있으며 모두 기본 SQL 라이브러리를 통해 처리됩니다.자신의 Java 코드를 사용하여 전체 파일 로드(심지어 단일 파일)를 관리하는 것은 훨씬 더 많은 작업이 될 것입니다.

또한 데이터베이스에 데이터를 쓰고 다시 읽어야 할 때까지 잊어버릴 수도 있습니다.데이터를 파일에 저장하는 경우, 데이터를 언제 읽고 써야 하는지 계산해야 합니다. 안드로이드 애플리케이션 수명주기.배터리가 걱정된다면 필요한 것보다 더 자주 파일을 쓰고 메모리에 데이터를 캐시하고 싶지 않을 것입니다. 하지만 앱이 일시 중지되거나 삭제될 때 데이터가 손실되지 않도록 해야 합니다. .제 생각에는 SQLite 데이터베이스를 사용하는 것이 훨씬 쉽고 이에 대해 걱정할 필요가 없습니다.

다른 팁

sqlite db는 단순히 시스템의 파일이기 때문에 sqlite 또는 파일을 사용하는지 여부는 중요하지 않습니다 ( /data/data/<your_package>/databases/). 적절한 시간에 파일을 하드 드라이브에 저장하는 데 필요한만큼 적절한 시간에 DB에 커밋해야합니다. 다시 말해, 많은 하드 드라이브가 쓴대로 사용할 수있는 방식 또는 다른 방법으로 사용할 수 있습니다.

선택한 것은 어떤 종류의 데이터를 저장하는지에 달려 있다고 생각합니다. DB가있는 힘이 필요한 경우 (예 : 쿼리) 수여 할 수있는 경우 SQLITE를 사용하십시오. 그러나 DB가 필요하지 않거나 크게 변하는 데이터가 있고 (관계형 데이터베이스에서 쉽게 설정할 수 없음) 파일과 함께 이동합니다.

확실히 말할 수있는 것은 당신이 ~ 아니다 파일을 저장하기 위해 직렬화를 사용하십시오. 그것이 선택한 경로 인 경우. 안드로이드 직렬화는 느리고 느리고 느리고 큰 파일을 만듭니다. 성능의 이유로 자신의 XML 또는 JSON 형식을 작성하는 것이 훨씬 낫습니다.

응용 프로그램이 멀티 스레드입니까? 데이터 스토어에 액세스하는 여러 스레드가 있으면 SQLite와 함께 이동합니다. SQLITE가 잠금 문제에 대해 걱정하게하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top