Activity
이 일시 중지되었을 때 일정량의 데이터를 저장하려고합니다. 내 자신의 ContentProvider
SQLite 데이터베이스와 함께 백업을 사용하고 있습니다. ContentProvider를 통해 작업을 완료하는 신뢰할 수있는 방법
의가 있다고 가정 해 봅시다
, 실제 절약을 perfoms 그 방법은 다음과 같습니다public void saveData() {
//perform operations over ContentProvider in current thread
}
질문이다 : 그것은 단지 (새 스레드를 사용하여) onPause
에서이 메소드를 호출하는 것이 안전합니다?
public void onPause() {
super.onPause();
new Thread(new Runnable() {
public void run() {
saveData();
}
}).start();
}
아니면 백그라운드에서이 작업을 완료하는 새로운 Service
을 시작해야합니까? 아니면 데이터가 저장되었는지보다 확실한 방법이 있습니까?
제한된 시간에 스레드가 종료되는 한 그 문제는 보이지 않습니다. 그러나 후속 SQLite 작업은 해당 기간 동안 차단되므로 매우 빠른 일시 중지 - 다시 시작 시나리오는 약간 지연됩니다. –
@ User117 문제는 내가 "유한"이라고 부를 수 있는지 잘 모르겠다. 예기치 않은 시간에 스레드가 종료된다고 가정 해 봅시다. –
asyncTask 사용을 고려하십시오. 새 스레드를 시작하는 데 더 많은 시간이 걸립니다. – Leonidos