1

我有一个包含进度条的通知。progressBar 更新代码在服务中运行。代码如下

notificationManager.notify(42, notification);

while((count = inputStream.read(data)) != -1)
{
    //new 
    downloadProgress += count;
    outputStream.write(data,0,count);
    //new
    notification.contentView.setProgressBar(R.id.status_progress, contentLength, downloadProgress, false);
    notificationManager.notify(42, notification);
}

我面临的问题是,由于在notificatoinManager.notify()从流中读取的数据之间调用了该方法,因此会减慢复制过程。

我怎么解决这个问题 ?

4

1 回答 1

3

您可能可以使用 AsyncTask 将 UI 更新与实际阅读分开

public class ReadFile extends AsyncTask<Void, Integer, String> {
@Override 
protected String doInBackground(Void... params) {    
//Do the reading here
downloadProgress += count;    
outputStream.write(data,0,count);
publishProgress(downloadProgress);
}
@Override
protected void onProgressUpdate(Integer... progress) {
notification.contentView.setProgressBar(R.id.status_progress, contentLength, downloadProgress, false);       
notificationManager.notify(42, notification);               
}

希望这可以帮助!

于 2012-09-25T11:24:24.113 回答