2014-10-03 6 views
1

안드로이드 0.8.11모범 사례

안녕하세요,

I sqlite3를 데이터베이스를 사용하고 성장하는 몇 백 개 기록 할 수있는 내용을 저장하는 응용 프로그램이 .

스플래시 화면을 사용하여 레코드를로드합니다. 그러나 사용자가 뒤로 버튼으로 앱을 닫으면 항목이 저장됩니다. 그러나 이것은 오랜 시간이 걸릴 수 있습니다.

장기 실행 작업의 영향은 무엇입니까? 안드로이드가 그것을 죽이고 데이터베이스를 손상시킬 수 있습니까?

onPause 중에 스레드를 만들 수 있습니까, 아니면 좋지 않습니까? 어떤 제안에 대한

감사합니다,

+0

이 서비스는 좋은 접근 방식을 제공합니다. – Piyush

+0

Service + AsyncQueryHandler를 배경 작업 말로 사용하십시오. – pskink

답변

1

가장 좋은 방법은 당신을 위해 큰 일을 할 것 IntentService을 시작하는 것입니다. onResume 및 메서드가 UI 스레드에서 실행되는 한 가능한 한 빨리 실행해야합니다. 그렇지 않으면 화면 고정 및 ANR 오류가 발생할 수 있습니다. 그래서 당신이해야 할 유일한 것은 당신의 onPause 방법으로 서비스를 시작하고 onPause 전화에서 스레드 시작 그것의 일 :

1

을 할두고하는 것은 나쁜의 연습이고 당신은 일부 데이터를 잃어 버릴 수 있습니다 을에서 javadoc을 읽을 수 있습니다 (강조 표시).

시스템에 더 많은 메모리가 필요한 상황에서는 일시 중지 된 프로세스를 사용하여 리소스를 회수 할 수 있습니다. 이 때문에에서 반환 할 때까지 모든 상태가 저장되어 있는지 확인해야합니다.

에 스레드를 시작하여 속도를 빠르게하면이 스레드는 데이터를 저장하는 동안 종료 될 수 있습니다.

사용자가 응용 프로그램을 종료 할 때 한 번에 모든 레코드를 저장하지 않아도되도록 활동 기간 동안 레코드를 점진적으로 저장해야합니다. 또한 백그라운드 서비스로 작업을 오프로드 할 수 있지만 서비스가 중단 될 수 있으므로 데이터를 잃지 않도록주의해야합니다.