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[])