홈버튼 클릭시 생명주기에 onPause 보다 먼저 호출되는 이벤트가 있다.

 

onUserLeaveHint()

- 홈버튼 클릭시 

- Activity 이동시 

  * Activity 이동시 호출 안되게 하기 위해서는 FLAG_ACTIVITY_NO_USER_ACTION 플러그를 추가하면 됨.

     Intent intent = new Intent(MainActivity.this, SubActivity.class);
     intent.addFlags(FLAG_ACTIVITY_NO_USER_ACTION);  // 플래그를 추가한다.
     startActivity(intent);

 

onWindowFocusChanged(boolean hasFocus)

  : hasFocus가 false 이면 화면이 가려지거나 백그라운드 앱전체 보기 전환시, true 이면 화면이 정상적으로 돌아왔을 경우

- 백그라운드 앱으로 이동(실행중인 앱 전체 보기)

- Activity 이동시

 

해당 이벤트를 이용해서 백그라운드 전체보기 전환시 앱 화면을 캡쳐 못하게 처리할 수 있다.

 

@Override
protected void onUserLeaveHint() {
    //캡쳐방지 설정
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
    super.onUserLeaveHint();
}
    
@Override
public void onWindowFocusChanged(boolean hasFocus) {

    Log.d("lifeCycle", "1.onWindowFocusChanged");
    if (hasFocus == true) {
        Log.d("lifeCycle", "화면보여짐");
        // 캡쳐방지 해제
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
    } else {
        Log.d("lifeCycle", "화면안보여짐");
        // 캡쳐방지 설정
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
    }


    super.onWindowFocusChanged(hasFocus);
}

+ Recent posts