2012-11-27 15 views
2

我正在使用Android批註。有一個進度對話框,但是當我旋轉屏幕(陸到港)時。進度對話框消除並在log cat中顯示這些錯誤。如何處理Android註釋中的配置更改(旋轉屏幕)

活動com.example.progressdialog.AnnotationProgressDialogActivity_已經泄露,最初這裏加入

android.view.WindowLeaked窗口[email protected]:活動融爲一體。 example.progressdialog.AnnotationProgressDialogActivity_已經泄露,最初這裏加入

這裏窗口[email protected]是我的代碼: -

@EActivity(R.layout.main) 
public class AnnotationProgressDialogActivity extends Activity 
{ 
    @NonConfigurationInstance 
    ProgressDialog pd ; 

    @NonConfigurationInstance 
    @Bean 
    BackgroundTask bgt; 


    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

    } 

    @Click 
    public void loginButton() 
    { 

     pd = ProgressDialog.show(this,"Login", "Loading please wait....."); 
     bgt.backGroundMethod(); 
    } 

    public void dismissDialog() 
    { 
     pd.dismiss(); 
    } 
} 

    enter code here 

@EBean 
public class BackgroundTask 
{ 
    @RootContext 
    Activity apda; 

    @Background 
    public void backGroundMethod() 
    { 
     try 
     { 
      TimeUnit.SECONDS.sleep(10); 
      update(); 
     } 
     catch(Exception e) 
     { 
      Log.e("Error",""+e); 
     } 
} 

    @UiThread 
    public void update() 
    { 
     //((AnnotationProgressDialogActivity)apda).updateUI(); 
     ((AnnotationProgressDialogActivity)apda).dismissDialog(); 
    } 
} 

回答

1

出現此錯誤是因爲您保留對ProgressDialog的引用,ProgressDialog本身保留對引用了泄漏的DecorView的已銷燬活動的引用。

這裏是你應該做的事情,而不是:

  1. 有一種方式來紀念BackgroundTask爲「正在運行」,如布爾字段中的onCreate()
  2. ,檢查「跑」是真實的,如果是,則創建一個新的進度對話框並顯示它

另請注意,可以用@RootContext AnnotationProgressDialogActivity apda替換@RootContext Activity apda

+0

感謝您的回答piwai..means我們將不得不在旋轉後啓動其他進度對話框......這是唯一的方法來做到這一點..我們不能得到相同的進度對話框。 – Unknown