Params - Progress - Result - public abstract class AsyncTask<Params,Progress,Result>
extends java.lang.Object
Button dldButton = new Button("download zip");
add(dldButton, CENTER, CENTER);
final ProgressBar progressBar = new ProgressBar();
add(progressBar, CENTER, AFTER + UnitsConverter.toPixels(DP + 16),
PARENTSIZE + 80, PREFERRED);
dldButton.addPressListener((c) -> {
new AsyncTask() {
int progress = 0;
UpdateListener updateListener = null;
@Override
protected Object doInBackground(Object... objects) {
HttpStream.Options o = new HttpStream.Options();
o.httpType = HttpStream.GET;
final String url = "";
if(url.startsWith("https:"))
o.socketFactory = new SSLSocketFactory();
try {
HttpStream p = new HttpStream(new URI(url));
File f = new File("file.zip", File.CREATE_EMPTY);
int totalSize = p.contentLength;
byte [] buff = new byte[4096];
BufferedStream bs = new BufferedStream(f, BufferedStream.WRITE, 4096);
int counter = 0;
while(true) {
int size = p.readBytes(buff, 0, buff.length);
counter += size;
progress = (int)((counter/(double)totalSize)*100);
if(size <= 0) break;
bs.writeBytes(buff, 0, size);
}
progress = 100;
bs.close();
p.close();
f.close();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPreExecute() {
dldButton.setEnabled(false);
MainWindow.getMainWindow().addUpdateListener(updateListener = (elapsed) -> {
progressBar.setValue(progress);
});
}
@Override
protected void onPostExecute(Object result) {
dldButton.setEnabled(true);
MainWindow.getMainWindow().removeUpdateListener(updateListener);
}
}.execute();
});
| Constructor and Description |
|---|
AsyncTask() |
| Modifier and Type | Method and Description |
|---|---|
protected abstract Result |
doInBackground(Params... params)
Method in background thread when execute method is called
|
AsyncTask<Params,Progress,Result> |
execute(Params... params)
execute
doInBackground(java.lang.Object[]) outside UI Thread |
protected void |
onPostExecute(Result result)
Method called in UI Thread when the task executed in
doInBackground(java.lang.Object[]) is finished. |
protected void |
onPreExecute()
Process task on pre execute in the thread in which this method was called
|
protected void |
onProgressUpdate(Progress... values)
Override this method if you want to Provide progress to the UI Thread when
calling publishProgress inside doInBackground.
|
protected void |
publishProgress(Progress... values)
Calls
onProgressUpdate(java.lang.Object[]) in UI Thread |
protected void onPreExecute()
protected abstract Result doInBackground(Params... params)
params - execute(java.lang.Object[])protected void onProgressUpdate(Progress... values)
values - doInBackground(java.lang.Object[]),
publishProgress(java.lang.Object[])@SafeVarargs protected final void publishProgress(Progress... values)
onProgressUpdate(java.lang.Object[]) in UI Threadvalues - onProgressUpdate(java.lang.Object[])protected void onPostExecute(Result result)
doInBackground(java.lang.Object[]) is finished.result - doInBackground(java.lang.Object[])