是否可以显示我的 ProgressBar 或 ProgressDialog
DownloadService(是IntentService的扩展),除了进度
显示在通知栏中?
你能写一个示例代码或伪代码我该怎么做吗?感谢
你
您可以使用 ResultReceiver 来实现您的目标。 ResultReceiver 实现了 Parcelable,因此您可以将其传递给 IntentService,如下所示:
Intent i = new Intent(this, DownloadService.class);
i.putExtra("receiver", new DownReceiver(new Handler()));
<context>.startService(i);
然后在你的onHandlerIntent()您所需要的只是获取传递给 Intent 的接收器并将当前进度发送到 ResultReceiver:
protected void onHandleIntent(Intent intent) {
// obtaining ResultReceiver from Intent that started this IntentService
ResultReceiver receiver = intent.getParcelableExtra("receiver");
...
// data that will be send into ResultReceiver
Bundle data = new Bundle();
data.putInt("progress", progress);
// here you are sending progress into ResultReceiver located in your Activity
receiver.send(Const.NEW_PROGRESS, data);
}
And 结果接收者 将处理数据并进行更新 进度对话框。这是 ResultReceiver 的实现(将其作为 Activity 类的内部类):
private class DownReceiver extends ResultReceiver {
public DownloadReceiver(Handler handler) {
super(handler);
}
@Override
public void onReceiveResult(int resultCode, Bundle resultData) {
super.onReceiveResult(resultCode, resultData);
if (resultCode == Const.NEW_PROGRESS) {
int progress = resultData.getInt("progress");
// pd variable represents your ProgressDialog
pd.setProgress(progress);
pd.setMessage(String.valueOf(progress) + "% downloaded sucessfully.");
}
}
}