2014-02-20 39 views
0

這是在「泄漏窗口」和AlertDialog下有據可查的問題。 我做了廣泛的研究,並作爲一個基本的例子張貼「呼叫新的意圖AlertDialog後問12年1月5日在9:23 briana posy」和其他人。 即使在調試下,我也無法找到窗口泄漏的位置和原因。 有人能指點我一個方法來解決它嗎? 在此先感謝。在AlertDialog中按下確定後,活動泄漏窗口

 public void SendMessageDialog(String message) { 

      AlertDialog.Builder builder = new AlertDialog.Builder(this); 
      if (bkcode == 0) {  
       builder.setIcon(R.drawable.ecg);      /* SET OK ICON */ 
       message = BKP_OK; 
      }else { 
       builder.setIcon(R.drawable.bad);    /* SET NOK ICON */ 
       builder.setTitle("My MESSAGE") 
       .setMessage(message)       
       .setCancelable(true)        // allow the use of Back Button on the hardware 
       .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
        dialog.dismiss(); 
        returnMain(); 

     }     
     }); 
    final AlertDialog alert = builder.create(); 
    alert.show();  
     } 
    /////////////////////////////////////////////////////////////////// 
    //    BACK TO THE CALLING ACTIVITY 
    /////////////////////////////////////////////////////////////////// 
    public void returnMain() { 
      Intent intent = new Intent(CheckSDDB.this, MainActivity.class); 
      intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      CheckSDDB.this.startActivity(intent); 

} 

登錄:

02-20 07:39:45.642: E/WindowManager(5412): Activity com.peter.databasetest.CheckSDDB has leaked window com.android.internal.po[email protected] that was originally added here 
02-20 07:39:45.642: E/WindowManager(5412): android.view.WindowLeaked: Activity com.peter.databasetest.CheckSDDB has leaked window  [email protected] that was originally added here 
02-20 07:39:45.642: E/WindowManager(5412):  at android.view.ViewRootImpl.<init>(ViewRootImpl.java:374) 
02-20 07:39:45.642: E/WindowManager(5412):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:292) 
02-20 07:39:45.642: E/WindowManager(5412):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224) 
02-20 07:39:45.642: E/WindowManager(5412):  at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:149) 
02-20 07:39:45.642: E/WindowManager(5412):  at android.view.Window$LocalWindowManager.addView(Window.java:547) 
02-20 07:39:45.642: E/WindowManager(5412):  at android.app.Dialog.show(Dialog.java:277) 
02-20 07:39:45.642: E/WindowManager(5412):  at com.peter.databasetest.CheckSDDB.SendMessageDialog(CheckSDDB.java:377) 
02-20 07:39:45.642: E/WindowManager(5412):  at com.peter.databasetest.CheckSDDB.checkDatabase(CheckSDDB.java:233) 
02-20 07:39:45.642: E/WindowManager(5412):  at com.peter.databasetest.CheckSDDB.onCreate(CheckSDDB.java:113) 
02-20 07:39:45.642: E/WindowManager(5412):  at android.app.Activity.performCreate(Activity.java:5008) 
02-20 07:39:45.642: E/WindowManager(5412):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
02-20 07:39:45.642: E/WindowManager(5412):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 
02-20 07:39:45.642: E/WindowManager(5412):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
02-20 07:39:45.642: E/WindowManager(5412):  at android.app.ActivityThread.access$600(ActivityThread.java:130) 
02-20 07:39:45.642: E/WindowManager(5412):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
02-20 07:39:45.642: E/WindowManager(5412):  at android.os.Handler.dispatchMessage(Handler.java:99) 
02-20 07:39:45.642: E/WindowManager(5412):  at android.os.Looper.loop(Looper.java:137) 
02-20 07:39:45.642: E/WindowManager(5412):  at android.app.ActivityThread.main(ActivityThread.java:4745) 
02-20 07:39:45.642: E/WindowManager(5412):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-20 07:39:45.642: E/WindowManager(5412):  at java.lang.reflect.Method.invoke(Method.java:511) 
02-20 07:39:45.642: E/WindowManager(5412):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
02-20 07:39:45.642: E/WindowManager(5412):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
02-20 07:39:45.642: E/WindowManager(5412):  at dalvik.system.NativeStart.main(Native Method) 

@cYrixmorten:很抱歉的延遲答覆。你的代碼工作正常。爲你+1。

回答

0

這有什麼區別,如果你這樣做:

public void returnMain() { 
     if (alert != null && alert.isShowing()) { 
      alert.dismiss(); 
     } 
     Intent intent = new Intent(CheckSDDB.this, MainActivity.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     CheckSDDB.this.startActivity(intent); 
} 
相關問題