package com.dam.profesor.tareasasincronas; import android.app.ProgressDialog; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ProgressBar; import android.widget.Toast; public class MainActivity extends AppCompatActivity implements View.OnClickListener { Button button; Button button2; Button button3; ProgressBar progressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button)findViewById(R.id.button); button2 = (Button)findViewById(R.id.button2); button3 = (Button)findViewById(R.id.button3); progressBar = (ProgressBar)findViewById(R.id.progressBar); button.setOnClickListener(this); button2.setOnClickListener(this); button3.setOnClickListener(this); } private void UnSegundo(){ try{ Thread.sleep(1000); }catch (InterruptedException e){} } @Override public void onClick(View v) { switch (v.getId()){ case R.id.button: for(int i=1; i<=10; i++){ UnSegundo(); } break; case R.id.button2: Hilos(); break; case R.id.button3: EjemploAsyncTask ejemploAsyncTask = new EjemploAsyncTask(); ejemploAsyncTask.execute(); break; default: break; } } void Hilos(){ new Thread(new Runnable() { @Override public void run() { for(int i=1; i<=10; i++){ UnSegundo(); } runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(getBaseContext(), "Tarea Larga Finalizada", Toast.LENGTH_SHORT).show(); } }); } }).start(); } private class EjemploAsyncTask extends AsyncTask<Void,Integer,Boolean>{ @Override protected void onPreExecute() { super.onPreExecute(); progressBar.setMax(100); progressBar.setProgress(0); } @Override protected Boolean doInBackground(Void... params) { for(int i=1; i<=10; i++){ UnSegundo(); publishProgress(i*10); if(isCancelled()){ break; } } return true; } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); progressBar.setProgress(values[0].intValue()); } @Override protected void onPostExecute(Boolean resultado) { //super.onPostExecute(aVoid); if(resultado){ Toast.makeText(getBaseContext(), "Tarea Larga Finalizada en AsyncTask", Toast.LENGTH_SHORT).show(); } } @Override protected void onCancelled() { super.onCancelled(); Toast.makeText(getBaseContext(), "Tarea Larga Ha sido cancelada", Toast.LENGTH_SHORT).show(); } } }