2016-08-06 3 views
0

나는 onResume() 메쏘드의 상황을 가지고 있는데 어떻게 해결해야할지 모르겠다. 다음 코드 conssider 는() //do something only when everytime the activity comes to screen을 실행하기 위해`onResume`은 액티비티가 화면에 올 때만 호출하는 것이고 다른 메서드는 호출하지 않습니다.

우리가 myMethod가 definitly 호출됩니다 asume 경우
public class MyActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle b) { 
     super.onCreate(b); 
     Log.d("tag", "onCreate"); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     //do something only when everytime the activity comes to screen 
     Log.d("tag", "onResume"); 
    } 

    private void myMethod() { 
     this.onResume(); 
    } 
} 

, 나는 onResume을하게하고 싶지 않아요. myMethod은 고정 된 방법이므로 변경할 수 없습니다.

추신 : 내가이 질문을하는 이유는 안드로이드 6과 함께 PermissionDispatcher 라이브러리가있는 simillar 상황을 가지고 있으며 onReume() 메서드에서 "위험한 권한"을 호출하려고하지만 사용자가 권한을 거부하면 onReume()으로 다시 전화 할 것이므로 권한 요청 작업이 onResume()에 있으므로 권한이 다시 거부되고 무한 루프가 발생합니다

누구든지 내게 제안을 해주겠습니까?

업데이트 : 여기에 permissionDispatcher 라이브러리와 이미 실행 된 또는 단순히 경우에이 방법을 확인 내 문제

+2

'onResume' 메소드를 호출하면 안됩니다. 콜백은 시스템에 의해 호출되어야합니다. 'onResume'에서 수행하고자하는 로직을 별도의 메소드로 옮겨야합니다. –

+0

나는 그것을 부르지 않는다. 그것을 호출하는 안드로이드 시스템 권한 관리자 자체에 대한 메소드가 있습니다 – roostaamir

+0

실제 코드를 게시해야합니다. Btw, 나는 도서관이 onResume을 호출하지 않는다고 생각한다. 아마도 사용자에게 뭔가가 보여지고 활동이 일시 중지 된 다음 사용자가 다시 활동으로 넘어갈 때 다시 시작된다. –

답변

0

관련되어 issue입니다 상태

Bool a=true; 

    @Override 
      protected void onResume() { 
       super.onResume(); 
       //do something only when everytime the activity comes to screen 
       if(a==true) 
        { 
        //your Actions 
        } 
     else if(a==false) 
     { 
     //do nothing 
     } 
      } 
0

사용 된 SharedPreferences onResume

에서
@Override 
protected void onResume() { 
    super.onResume(); 
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
    boolean firstStart = settings.getBoolean("firstStart", true); 
    if(firstStart) { 
    //do something only when everytime the activity comes to screen 
    Log.d("tag", "onResume"); 
    //display your Message here 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putBoolean("firstStart", false); 
    editor.commit(); 
    } 

}