2012-10-06 2 views
2

zip 파일의 압축을 풀고 데이터베이스를 채우려면 DownloadManager.ACTION_DOWNLOAD_COMPLETE 브로드 캐스트를 받고 있습니다. 작업을 수행하는 코드를 작성했습니다. 그러나 스레드를 여기에서 시작해야합니다. 파일 추출 및 데이터베이스에 삽입을 처리합니다.브로드 캐스트 수신기 안쪽에 스레드 안드로이드

브로드 캐스트 수신기에서 스레드를 시작할 수 없다는 것을 알고 있습니다. 어떤 몸이라도 문제가 발생하면 해결 방법을 제안하십시오. 제 작품이 삽입 될 때 시간이 걸리므로 기다리거나 붙잡고 싶지는 않습니다.

방송 수신기 내부

BroadcastReceiver onComplete = new BroadcastReceiver() { 
    public void onReceive(Context ctxt, Intent intent) { 

     /* 
     * check status message whether the last queue is successful and 
     * completed and then stop self 
     */ 
     if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(intent.getAction())) { 
      Intent mIntent = new Intent(downloadmanager1.this, DBService.class); 
      mIntent.putExtra("messenger", new Messenger(mHandler)); 
      mIntent.putExtra("enqueue", enqueue); 
      ctxt.startService(mIntent); 
      // ctxt.startService(mIntent); 
     } 
    } 

참고 작동하지 않는이 코드를 작성하는 방송 수신기 내부 스레드와

을 실행하는 동안 나는 예외를 얻고있다 - 예외 또는 오류를 통해없고 어느 쪽도 어느 Intentservice이 시작되지 않습니다 디버깅하는 동안 DDMS
}};

답변

5

1 단계 : "파일 추출 및 데이터베이스 삽입 삽입"작업을 수행하는 IntentService을 작성하십시오.

2 단계 : BroadcastReceiveronReceive()에서 startService()으로 전화를 걸어 IntentService으로 제어를 전달합니다.

+0

@CommonsWare 방송 수신기 내부의 스레드가 작동하지 않는 이유는 무엇입니까? 내 프로젝트 중 하나에서 같은 문제가 발생했습니다. 설명 해주십시오! – Hardik

+0

@Hardik onReceive()가 완료된 후 브로드 캐스트 리시버가 안드로이드에 의해 대부분 죽임을 당하기 때문에. –

관련 문제