2012-11-27 1 views
2

Android 어노테이션을 사용하고 있습니다. 화면을 회전시킬 때 진행 대화 상자가 나타납니다 (육지에서 항구로). 진행률 대화 상자가 닫히고 로그 cat에 이러한 오류가 표시됩니다. 활동 co.kr에서 :안드로이드 어노테이션에서 설정 변경을 처리하는 방법 (화면 회전)

활동 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

이 오류는 누출 된 DecorView에 대한 참조가있는 파괴 된 활동에 대한 참조를 유지하는 ProgressDialog에 대한 참조를 유지하기 때문에 나타납니다. 여기

가 대신해야 할 것입니다 :

  1. 는 "실행"으로 BackgroundTask을 표시 할 수있는 방법이 같은 부울 필드에서 onCreate()에서
  2. 로, 검사는 "실행"있는 사실이다 만약 그렇다면 새로운 진행 대화 상자를 만들어서 보여주십시오.

또한 은 @RootContext AnnotationProgressDialogActivity apda으로 바꿀 수 있습니다.

+0

답변 주셔서 감사합니다. piwai .. 우리가 회전 후 다른 진행 대화 상자를 시작해야한다는 것을 의미합니다 ...이 작업을 수행하는 유일한 방법입니다. 우리는 같은 진행 대화 상자를 얻을 수 없습니다. – Unknown