文件下载在android中与后台服务

时间:2010-11-14 12:53:47

标签: android

当我在android中从web下载文件时,我想通过服务在状态栏的通知区域中显示进度条,但我无法做到这一点。我该怎么做?我无法在服务中传递文件长度。我在EditText中提供URL,然后单击“下载”按钮。 Click Click类将在Click Listener上调用,此类具有一个函数。在该功能中,我正在进行下载的处理或功能,现在我想通过服务在通知区域中显示进度条,但我无法做到这一点。请帮我。提前谢谢。

2 个答案:

答案 0 :(得分:2)

  1. 您不应该在事件处理程序中运行网络代码(或任何长时间运行/阻塞代码)。这会阻塞主线程(EDT)并使应用程序无响应,可能会产生ANR。您应该使用AsyncTask

  2. 要显示通知,只需创建new Notification(..),然后拨打NotificationManager.notify()。您可以使用AsyncTask.onPreExecute()方法安全地创建通知,并通过调用AsyncTask.doInBackground()

  3. publishProgress(..)方法内更新通知

    示例ProgressBar in Notification Area。您必须在2中所述的AsyncTask中使用它。

答案 1 :(得分:1)

应该是下载文件的服务,而不是活动(正如我现在所理解的那样)。完成服务后将通知活动并(可选)传递结果。在这种情况下,您将能够更新通知进度条并仍然与用户进行交互。