나는 일정한 간격으로 데이터 스트림을 가져 오는 BroadcastReceiver
을 사용하고 있으며 해당 데이터를 기반으로 특정 데이터베이스 작업을 수행하여 해당 데이터를 여러 테이블에 삽입합니다.BroadcastReceiver에서 데이터를받은 후 데이터베이스 작업하기
BroadcastReceiver
안에 데이터베이스 작업을 할 수 있지만 수신자는 언제든지 반환 할 수 있지만 문제가 있습니다. Morel, 나는 AsyncTask
에서 그러한 데이터베이스 작업을하고 싶습니다.
그러나 (AFAIK) 아직도 onReceive()
반환 및 실행중인 다른 활성 구성 요소가없는 경우 안드로이드는 프로세스를 죽일 수 있다는 같은 이유로 BroadcastReceiver
에서 AsyncTask
를 시작하는 좋은 방법이 아닙니다, 그래서 나는 Service
왼쪽하고 있기 때문에 데이터베이스 관련 작업을 수행합니다. 이 서비스는 AsyncTask
을 관리해야합니다. 이렇게하면 Android가 활성 구성 요소를 인식하고 Android가 프로세스를 중지하지 않습니다.
- 주어진 시나리오에서 이렇게하는 것이 가장 좋은 방법입니까? - 이것도
브로드 캐스트 리시버==>서비스==>AsyncTask를==>SQLite는 (INSERT)
안 그렇다면 Service
대신 IntentService
은 어떨까요?
- BroadcastReceiver 자체에서 데이터베이스 작업을 수행하면 어떻게됩니까?
나는 SQLiteOpenHelper
클래스의 싱글 어댑터를 가지고, 그래서 내가 데이터베이스 작업을위한 어댑터를 사용 BroadcastReceiver
의 onReceive()
에서받을 context
사용할 수 있습니다. 그러나 접근법은 비효율적 인 것처럼 보입니다.
제안하십시오 ..
'IntentService' 자체가'AsyncTask'라는 것을 알고 있기 때문에 IntentService의 onHandleIntent()에서 데이터베이스 작업을 수행 할 수 있습니까? –
@VedPrakash : "IntentService 자체가 AsyncTask라는 것을 알고 있습니다."- 아니, 그렇지 않습니다. "IntentService의 onHandleIntent()에서 데이터베이스 작업을 수행 할 수 있습니까?" -- 예. – CommonsWare
그래서'onHandleIntent()'에서 일어날 데이터베이스 연산은'AsyncTask' 연산이 아니라는 것을 의미합니까? –