Android安装过程对话框更新Demo
Android安装过程对话框更新Demo
最近在做一个批量安装卸载的管理器,在安装的过程中要显示安装信息,比如说:"正在安装XX1.apk 正在安装XX2.apk“当然这个显示是在对话框上面显示的。怎么做呢?实现是这样的:
1、在Activity中重写onCreateDialog(int id)方法;
2、使用Handler更新对话框的信息;
3、用线程监控安装信息,将信息设置在Message中通过Handler发送。
具体实现请看代码:
- package cn.tch.cdg;
- import Android.app.Activity;
- import android.app.AlertDialog;
- import android.app.Dialog;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class CustomDialogActivity extends Activity {
- private static final int PROGRESS_DIALOG = 0;
- private Button btnShowDialog;
- private ProgressThread mProgressThread;
- private Dialog mDialog;
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- btnShowDialog = (Button) findViewById(R.id.progressDialog);
- btnShowDialog.setOnClickListener(new OnClickListener(){
- public void onClick(View v) {
- showDialog(PROGRESS_DIALOG);
- }
- });
- }
- protected Dialog onCreateDialog(int id) {
- switch(id) {
- case PROGRESS_DIALOG:
- mDialog = new AlertDialog.Builder(CustomDialogActivity.this).create();
- mDialog.setTitle("请稍候");
- ((AlertDialog) mDialog).setMessage("");
- mProgressThread = new ProgressThread(handler);
- mProgressThread.start();
- return mDialog;
- default:
- return null;
- }
- }
- final Handler handler = new Handler() {
- public void handleMessage(Message msg) {
- int total = msg.getData().getInt("total");
- String message = msg.getData().getString("message");
- ((AlertDialog) mDialog).setMessage(message);
- if (total >= 100){
- dismissDialog(PROGRESS_DIALOG);
- mProgressThread.setState(ProgressThread.STATE_DONE);
- }
- }
- };
- private class ProgressThread extends Thread {
- Handler mHandler;
- final static int STATE_DONE = 0;
- final static int STATE_RUNNING = 1;
- int mState;
- int mTotal;
- ProgressThread(Handler handler) {
- mHandler = handler;
- }
- public void run() {
- mState = STATE_RUNNING;
- mTotal = 0;
- while (mState == STATE_RUNNING) {
- Message msg = mHandler.obtainMessage();
- Bundle bundle = new Bundle();
- bundle.putInt("total", mTotal);
- bundle.putString("message", "正在安装:"+mTotal); // 设置Message
- msg.setData(bundle);
- mHandler.sendMessage(msg);
- mTotal++;
- try {
- Thread.sleep(300);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- public void setState(int state) {
- mState = state;
- }
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <Button
- android:id="@+id/progressDialog"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="显示对话框"/>
- </LinearLayout>
评论暂时关闭