基本上我尝试制作一个用于观看离线内容的应用程序。因此,用户选择下载内容的时刻(应用程序应下载大约300个小文件和图像)。
我想向用户展示如果他进入正确的活动,该过程将如何进行。显示所有文件的列表,告诉已经下载的内容,正在进行中或等待下载。
我的问题是,我真的不知道采取什么方法来实现这一目标。由于下载应该持续到完成,我想解决方案是Service
,但最好的是什么? IntentService,绑定服务或标准服务为每次下载调用startService()?如何更新对象以便以后显示它们?我应该在内存中使用数据库还是对象?
由于
答案 0 :(得分:3)
我建议使用AsyncTask
类,它允许您轻松地将耗时的代码(如下载文件)移动到不同的线程。这将使您的应用程序保持响应,同时使您能够在此过程中更新UI。
如果没有关于您希望应用程序的确切行为的详细信息,则很难更具体。下载是仅在应用程序运行时发生还是在后台运行?
答案 1 :(得分:2)
您可以使用Asynctask或使用自定义策略实现ExecutorService并向其发送下载线程 如果要为用户提供停止下载的机会,则需要分别在集合内部保留对AsyncTask或Future对象的引用。 当然,每次要下载新文件时都需要调用startService。 仅在服务未运行时调用onCreate,并且每次调用startService时都运行onStartCommand。在onStartCommand中,您运行一个新线程以下载新文件。 您可以将服务与活动绑定,每次创建downloadsActivity时,您都会显示实现自定义适配器的下载状态。只有在调用activity.stopService或service.stopSelf
时才能完成服务