ProgressDialog 是Android中很常用的处理后台线程显示前台界面的工具
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class TestProgressDialog extends Activity {
private ProgressDialog dialog;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
dialog = new ProgressDialog(this);
dialog.setMessage("运行中...");
dialog.setIndeterminate(false);
dialog.setCancelable(true);
Button bt1=(Button)findViewById(R.id.button1);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
dialog.show();
Thread thread = new Thread(new ThreadDemo());//开始线程,程序后台,前台是dialog
thread.start();
}
});
}
final Handler handle = new Handler()
{
@Override
public void handleMessage(Message msg)
{
if(dialog!=null)
{
dialog.dismiss();
}
if( msg.what>0 )
{
Toast.makeText(TestProgressDialog.this, "线程成功结束", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(TestProgressDialog.this, "线程出现意外", Toast.LENGTH_SHORT).show();
}
}
};
Handler endSessionHandle = new Handler()
{
@Override
public void handleMessage(Message msg)
{
finish();
}
};
class ThreadDemo implements Runnable
{
public void run()
{
int what = -1;
try
{
for (int i=0;i<10;i++)
{
Thread.sleep(1000);//10秒的dialog显示
if (i==9)
{what=1;//走完之后信号置1
}
}
}
catch (Exception e)
{
e.printStackTrace();
Log.e("WeiboPub", e.getMessage());
}
handle.sendEmptyMessage(what);
}
}
}
