像Android Market一样下载文件

hsz*_*hsz 4 android download android-asynctask

我将实现一个在后台下载大文件(大约50MB)的函数.

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

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

小智 7

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

首先,如何创建通知应该非常简单,并且有很好的文档记录.如果您不知道如何创建正常通知,请查看状态栏通知.

下一步是创建一个包含自定义布局的通知ProgressBar (因为此afaik没有预先构建的布局),该通知也记录在同一页面上.Notification为此创建实例后,应保留引用并使用它来更新ProgressBarvia

notification.contentView.setProgressBar(R.id.yourprogressbar, 100, 42, false);
nm.notify(notificationId, notification);
Run Code Online (Sandbox Code Playgroud)

nmNotificationManager这里是一个引用,也可以参见RemoteViews.setProgressBar()

这基本上是UI方面的事情.实际下载文件的背景你应该使用的服务,其利用的AsyncTask (因为服务在UI线程上运行-这个名字常常误导).您可以使用AsyncTask.publishProgress()将下载进度更新发送到UI线程并更新内部的进度条AsyncTask.onProgressUpdate().