標籤:android style io ar color os 使用 sp java
Android中訊息佇列postDelay+Dialog引起的表單泄露的主要原因是,當床表單壓入棧或者finish掉後,Activity由於需要處理postDelay而不能及時銷毀,因此造成了一個問題,當dialog觸發show方法時,由於window和activity已經分開了,因此便會造成表單泄露。
1.WindowManager$BadTokenException
錯誤描述:android.view.WindowManager$BadTokenException: Unable to add window -- token [email protected] is not valid; is your activity running?
2.解決辦法是,使用一個變數檢測當前activity是否處於活動狀態
private boolean isActive = true;public void onResume(){ super.onResume(); isActive = true;}public void onPause(){ super.onPause(); isActive = false;}public boolean activityIsActivity(){ return isActive;}public void showAlertDialog(){ if(activityIsActive()) //只有表單處於活動狀態時執行此程式 { AlertDialog.Builder builder = new AlertDialog.Builder(activity); builder.setTitle("hello world") .setCancelable(false) .setMessage("Hello"); builder.create().show();}}
Android postDelay+Dialog引起的表單泄露