我将实现一个在后台下载大文件(大约50MB)的功能。
我想像Android Market一样 - 我的意思是当用户开始下载文件时,它会显示在状态栏中,包含所有进度条,并在完成后通知我的应用程序。
你可以给我一些提示吗?我知道我的问题不是很高质量,但我以前一直在做研究,而且我没有关键词可以搜索任何解决方案。答案 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 +。