1. 程式人生 > >android WindowLeaked異常的解決方法

android WindowLeaked異常的解決方法

 前些陣子在搞一個app的時候,呼叫了自定義的Dialog 來作為提示框,但是,總是出現window 視窗洩漏的異常,後來,重新去看了一下原始碼,再去查了一下資料,終於解決了這個問題。
 原來,  每一個android的activity都有一個windowManager的視窗管理器,對應的每一個依附在activity上面的對話方塊,也有一個windowManager,如果,我在finish了activity的時候,沒有對這些視窗進行處理,那麼就會出現window leadked 這個異常。下面貼一下我寫的一個說明程式。

下面這段程式是會發生window leaked異常的。

private void 
initview() { dialog=new Dialog(context, R.style.myDialogTheme); View view=View.inflate(context,R.layout.return_pre_dialog,null); dialog.setContentView(view); message= (TextView) view.findViewById(R.id.message); cancle= (Button) view.findViewById(R.id.security_cancle); sure= (Button) view.findViewById(R.id.security_ok
); cancle.setOnClickListener(this); sure.setOnClickListener(this); dialog.show(); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.security_ok: listener.returnPreClickListener(); dialog.dismiss();//要加上這句,不然會報WindowLeaked異常 break; case R.id.security_cancle
: dialog.dismiss(); break; } }
當 dialog 結束的時候要進行 dismiss()函式的處理。

加上這行程式碼就行