package com.example.android_er.androidprogressdialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
Button btnStart;
MyAsyncTask myAsyncTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnStart=(Button)findViewById(R.id.start);
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,
"- Start -",
Toast.LENGTH_LONG).show();
myAsyncTask = new MyAsyncTask();
myAsyncTask.execute();
}
});
}
class MyAsyncTask extends AsyncTask<Void, Integer, Void>{
boolean running;
ProgressDialog progressDialog;
@Override
protected Void doInBackground(Void... params) {
int i = 10;
while(running){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(i-- == 0){
running = false;
}
publishProgress(i);
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
progressDialog.setMessage(String.valueOf(values[0]));
}
@Override
protected void onPreExecute() {
super.onPreExecute();
running = true;
progressDialog = ProgressDialog.show(MainActivity.this,
"ProgressDialog",
"Wait!");
progressDialog.setCanceledOnTouchOutside(true);
progressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
running = false;
}
});
Toast.makeText(MainActivity.this,
"Progress Start",
Toast.LENGTH_LONG).show();
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
Toast.makeText(MainActivity.this,
"Progress Ended",
Toast.LENGTH_LONG).show();
progressDialog.dismiss();
}
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:autoLink="web"
android:text="http://android-er.blogspot.com/"
android:textStyle="bold" />
<Button
android:id="@+id/start"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Start"/>
</LinearLayout>
more:
- Too busy in background thread of AsyncTask
Thank you very much for useful tutorials.
ReplyDeleteCuld not find this kind of working exmaple anywhere in google.
Thank you very much for useful example.
ReplyDeleteSir, everything works fine except the green progress animation. What to do ? I can see the space to left of progress message. but the animation is hidden
ReplyDeletehello Abhijith Thankachen,
ReplyDeleteWill it be Too busy in background thread of AsyncTask?
Thank you
ReplyDelete