线程内部广播接收器Android

时间:2012-10-06 13:25:12

标签: android multithreading broadcastreceiver looper

我收到了一个DownloadManager.ACTION_DOWNLOAD_COMPLETE广播,我需要提取zip文件并填写数据库,我已经编写了代码来完成我的工作。但是我必须在这里启动Thread来处理文件提取并插入数据库。

我知道线程无法在广播接收器内启动。如果有任何身体遇到问题,请提出解决方案..因为我的工作需要时间插入,所以我不想等待并坚持下去。

我在广播接收器和

中运行线程时遇到异常

编写此代码也无法在广播接收器中工作

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);
        }
    }

注意 - 没有异常或错误通过,并且在调试时没有在DDMS中启动任何Intentservice     };

1 个答案:

答案 0 :(得分:5)

步骤1:编写一个IntentService来完成“处理文件提取和插入数据库”的工作。

第2步:从startService()的{​​{1}}致电onReceive(),将控件传递给BroadcastReceiver