Mxy*_*xyk 1 android message progressdialog android-asynctask
我查看了一些关于类似问题的其他问题,并且我发现我需要使用该onProgressUpdate
方法来更改消息ProgressDialog
.
例如,我有这样的代码在AsyncTask
s 中运行doInBackGround
(这只是一个非常小的样本):
byte[] data = getBytesFromFile(image);
String lineEnd = "\r\n";
String twoHyphens = "--";
String boundary = "*****";
pictures.dia.setProgress(30);
pictures.dia.setMessage("Data beginning upload sequence...");
URL connectURL = new URL(this.base_url);
HttpURLConnection conn = (HttpURLConnection) connectURL.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Content-Type", "multipart/form-data, boundary=" + boundary);
DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
pictures.dia.setProgress(40);
pictures.dia.setMessage("Output Stream prepared...");
Run Code Online (Sandbox Code Playgroud)
当我最初这样运行时,我得到一个漏洞窗口错误,说我不能改变dia
之外的消息AsyncTask
.
所以我的问题是,我如何使用onProgressUpdate
设置进度dia
何时dia
达到一定数量的信息?(也就是说,当dia
进度= 30时,让它说"数据开始上传序列...")
onProgressUpdate
显然必须始终检查dia
进度(就像听众,我想)[如果它还没有这样做,如何我可以这样做吗?]
你需要实现的onProgressUpdate
方法AsyncTask
.创建一个包含进度百分比的新类,并将消息仅作为onProgressUpdate
方法的唯一参数.
在onProgressUpdate中,调用dia.setProgress
和dia.setMessage
.
在doInBackground方法中,publishProgress
使用包含新百分比和消息的新类的实例进行调用.这将导致AsyncTask
调用onProgressUpdate
主线程.
例如:
private static class TaskProgress {
final int percentage;
final String message;
TaskProgress(int percentage, String message) {
this.percentage = percentage;
this.message = message;
}
}
Run Code Online (Sandbox Code Playgroud)
在AsyncTask中(用实现的正确类型替换?):
public ProgressAsyncTask extends AsyncTask<?, TaskProgress, ?> {
public void onProgressUpdate(TaskProgress progress) {
pictures.dia.setProgress(progress.percentage);
pictures.dia.setMessage(progress.message);
}
public ? doInBackground(?... params) {
// ... your code
publishProgress(new TaskProgress(30, "A new update"));
// ... your code
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3356 次 |
最近记录: |