2012-10-06 171 views
2

我得到一個DownloadManager.ACTION_DOWNLOAD_COMPLETE廣播後得到我需要解壓縮zip文件並填寫數據庫我寫了代碼來做我的工作。但我必須在這裏啓動線程處理文件提取和數據庫插入。線程內廣播接收器Android

我知道線程無法在廣播接收器內部啓動。如果任何機構遇到問題,請提出解決方案..因爲我的工作需要時間插入,所以我不想等待並堅持下去。

我得到異常,同時運行廣播接收器內螺紋和

編寫這些代碼也廣播接收機內不能正常工作

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:撥打電話startService()BroadcastReceiveronReceive()將控制權傳遞給IntentService

+0

@CommonsWare爲什麼線程內廣播接收器不工作?我在我的一個項目中遇到了同樣的問題。請解釋! – Hardik

+0

@Hardik因爲在onReceive()完成後,廣播接收器很可能會被android殺死。 –