1. 程式人生 > >Android延遲自動關閉Dialog

Android延遲自動關閉Dialog

一般情況下,dialog可以設定positivebutton,negetiveButton,但是有時候為了展示進度,可以做一個假程序來顯示一個progressDialog。當然,也可以依照如下方法在後臺做一個程序監控器向handler傳送標誌位。

	private static int MSG_DISMISS_DIALOG = 0;
	private Handler mHandler = new Handler(){

		@Override
		public void handleMessage(Message msg) {
			// TODO Auto-generated method stub
			super.handleMessage(msg);
			
			if(MSG_DISMISS_DIALOG == msg.what){
				
				
				if(null != mProgressDialog){
					
					if(mProgressDialog.isShowing()){
						Log.i(TAG, "handler get mesage");
						mProgressDialog.dismiss();
						finish();
					}
				}
			}
		}
		
		
	};
定義一個靜態變數,作為標誌符,重寫handler的handleMessage方法,用於接收從其他執行緒傳回的訊息。
save_new_password.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
                
                mProgressDialog = new ProgressDialog(context);
                mProgressDialog.setMessage("正在儲存中,請稍候");
                mProgressDialog.show();
                mHandler.sendEmptyMessageDelayed(MSG_DISMISS_DIALOG, 8000);
                Log.i(TAG, "is show");
			}
			
			
		});
為按鈕新增click監聽器的時候,插入一個progressDialog,並且進行顯示。

向handler傳送一個延遲訊息,引數1位識別符號,引數2為延遲時間,單位為毫秒,當msg.what==MSG_DISMISS_DIALOG(事先定義好的標誌位)的時候,立即執行讓對話方塊消失的方法,並且關閉當前activity。