2

基本上我正在尝试制作一个用于观看离线内容的小应用程序。所以有一个时刻,用户选择下载内容(应用程序应该下载大约 300 个小文件和图像)。

我想向用户展示如果他输入正确的活动,该过程将如何进行。显示所有文件的列表,说明已下载、正在进行或等待下载的内容。

我的问题是我真的不知道要采取什么方法来实现这一目标。由于下载应该一直持续到完成,我想解决方案是一个Service,但最好的是什么?IntentService、绑定服务或标准服务为每次下载调用 startService()?以及如何保持我的对象更新以便以后显示它们?我应该在内存中使用数据库还是对象?

谢谢

4

2 回答 2

3

我建议使用AsyncTask类,它允许您轻松地将耗时的代码(如下载文件)移动到不同的线程。这将使您的应用程序保持响应,同时使您能够在此过程中更新您的 UI。

如果没有更多关于您希望应用程序如何运行的详细信息,很难更具体。下载是否仅在应用程序运行时或在后台时才会发生?

于 2012-09-10T21:36:37.113 回答
2

您可以使用 Asynctask 或使用自定义策略实现 ExecutorService 并将下载线程发送给它。
如果您想为用户提供停止下载的机会,您需要分别在集合内保留对 AsyncTask 或 Future 对象的引用。当然,每次下载新文件时都需要调用 startService。如果服务没有运行并且每次调用 startService 时都会运行 onStartCommand,则仅调用服务 onCreate。在 onStartCommand 中,您运行一个新线程来下载新文件。您可以将服务与活动绑定,并且每次创建 downloadsActivity 时,您都会显示实现自定义适配器的下载状态。服务仅在您调用 activity.stopService 或 service.stopSelf 时完成

于 2012-09-11T00:45:17.067 回答