我希望这个问题没问题。我有一些问题围绕如何解决这个问题:我想使用DownloadManager从Web服务器下载XML文件。 XML文件有一个info部分,其中包含数据库中的条目总数等。每个XML文件最多有1000个条目,条目总数可以是几千个,因此我需要动态启动新的下载会话,直到下载完所有内容。应用程序继续下载,解析数据并将其保存到应用程序SQLite数据库非常重要,即使应用程序未处于活动状态也是如此。
我试图通过以下方式解决这个问题:
创建DownloadIntentService类,扩展IntentService
让我的MainActivity类实现DownloadResultReceiver.Receiver,其中DownloadResultReceiver如下所示:
public class DownloadResultReceiver extends ResultReceiver {
private Receiver mReceiver;
public DownloadResultReceiver(Handler handler) {
super(handler);
}
public void setReceiver(Receiver receiver) {
mReceiver = receiver;
}
public interface Receiver {
public void onReceiveResult(int resultCode, Bundle resultData);
}
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
if (mReceiver != null) {
mReceiver.onReceiveResult(resultCode, resultData);
}
}
}
在我的MainActivity类中,如果我的数据库没有填充,我会调用initServiceDownload():
private void initServiceDownload(String sessionId, long offset)
{
/* Starting Download Service */
mReceiver = new DownloadResultReceiver(new Handler());
mReceiver.setReceiver(this);
Intent intent = new Intent(DownloadManager.ACTION_DOWNLOAD_COMPLETE, null, this, DownloadIntentService.class);
/* Send optional extras to Download IntentService */
intent.putExtra("url", Client.getUrl(sessionId, offset));
intent.putExtra("receiver", mReceiver);
intent.putExtra("database", userDatabase);
intent.putExtra("session", sessionId);
intent.putExtra("offset", offset+"");
startService(intent);
}
在我的DownloadIntentService' onHandleIntent中,我尝试使用DownloadManager下载文件
在我的MainActivity中,我从DownloadResultReceiver覆盖onReceiveResult(),如果结果是DownloadIntentService.STATUS_FINISHED,我想解析文件,然后启动另一个DownloadManager会话,直到完成。唯一的问题是我从来没有进入这种方法。
我在这里走在正确的轨道上吗?此外,我应该在IntentService类中实现第二部分来解析数据,然后从那里开始另一个会话吗?
我一直在谷歌搜索,试图找到最佳方法的信息,所以一些指针将是伟大的! : - )