像Android Market一样下载文件

时间:2011-11-18 16:02:35

标签: android download android-asynctask

我将实现一个在后台下载大文件(大约50MB)的功能。

我想像Android Market一样 - 我的意思是当用户开始下载文件时,它会显示在状态栏中,包含所有进度条,并在完成后通知我的应用程序。

你可以给我一些提示吗?我知道我的问题不是很高质量,但我以前一直在做研究,而且我没有关键词可以搜索任何解决方案。

2 个答案:

答案 0 :(得分:7)

这只是一个小概述,可以为您提供一些关键字。

首先,如何创建通知应该非常简单并且有详细记录。如果您不知道如何创建正常通知,请查看Status Bar Notifications

下一步是创建一个包含ProgressBar 的自定义布局的通知(因为此afaik没有预先构建的布局),这也在{{ 3}}。为此创建Notification个实例后,您应该保留该引用并使用它来通过

更新ProgressBar
notification.contentView.setProgressBar(R.id.yourprogressbar, 100, 42, false);
nm.notify(notificationId, notification);

nm此处为NotificationManager引用,另请参阅same page

这基本上是UI方面的事情。要在后台实际下载文件,您应该使用RemoteViews.setProgressBar()使用Service (因为服务在UI线程中运行 - 名称经常误导)。您可以使用AsyncTask.publishProgress()将下载进度更新发送到UI主题并更新AsyncTask.onProgressUpdate()内的进度条。

答案 1 :(得分:3)

除了@ alextsc的答案之外,如果您只支持API级别9及更高级别,您可以使用DownloadManager,它可以为您处理所有这些,包括连接更改等详细信息(例如,WiFi-> 3G)。但是,这只适用于Android 2.3 +。