ProgressDialog 和 handler (Android中的多线程)



         最近作了一个程序,就是把raw里的压缩文件,解压缩成数据库文件,然后放入项目里,这需要,一些时间,所以,我用了一个ProgressDialog来增加用户体验,也防止 kill Activity    ,首先看启ProgressDialog 然后再开启线程,当线程执行完成之后发送消息sendmessage,handler接受到msg.what 相匹配的消息之后,处理时间,把Dialog dismiss掉,

        ps:msg.arg1和msg.arg2是为了携带参数,作测试用的,在该例子中无实际用途

下面是一个傻瓜教程:

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		button = (Button) findViewById(R.id.button);
		et = (EditText) findViewById(R.id.edittext);
		tv = (TextView) findViewById(R.id.textview);



		initProgressDialog();
		Log.d(TAG, "thread run");

                //在onCreate 方法里开启线程
		new Thread(){

			public void run() {
				// TODO Auto-generated method stub
				Log.d(TAG, "run start");
				dbhelper = new DBManager(AttrActivity.this);//执行我需要进行的导入数据库的操作
				dbhelper.openDatabase();//
				dbhelper.closeDatabase();/
	//			handler.sendEmptyMessage(1);
				Message msg = new Message();
				msg.arg1 = 100;               //message.arg1 携带100
				msg.arg2 = 200;               //message.arg2 携带200
				msg.what = 1;
				handler.sendMessage(msg);     //发送msg消息
			}
		}.start();

                //handler 为处理消息
		Handler handler = new Handler(){

			@Override
			public void handleMessage(Message msg) {
				// TODO Auto-generated method stub
				super.handleMessage(msg);
				if(msg.what == 1){
                                //handler 通过msg.what 判断线程发给他的msg 如果符合,执行msg.what对应操作,当然msg携带的变量也可以取出
					Log.d(TAG, "msg.arg1 = " + msg.arg1);
					Log.d(TAG, "msg.arg2 = " + msg.arg2);
					
					mProgressDialog.dismiss();
				}
			}

		};




		button.setOnClickListener(this);
		sqldb = SQLiteDatabase.openOrCreateDatabase(DBManager.DB_PATH + "/" + DBManager.DB_NAME, null);        
	}


	public void initProgressDialog(){
		mProgressDialog = new ProgressDialog(AttrActivity.this);
		mProgressDialog.setTitle("~~~");
		mProgressDialog.setMessage("aaa");
		//   	mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
		mProgressDialog.show();
	}
 
 
 
  •     @Override  
  •     protected void onDestroy() {  
  •         //将线程销毁掉   
  •         mHandler.removeCallbacks(mRunnable);  
  •         super.onDestroy();  
  •     }  




  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值