투케이2K

194. (AndroidStudio/android/java) onUserLeaveHint 사용해 모바일 홈 키 (home key) 이벤트 발생 감지 실시 본문

Android

194. (AndroidStudio/android/java) onUserLeaveHint 사용해 모바일 홈 키 (home key) 이벤트 발생 감지 실시

투케이2K 2021. 9. 19. 09:33

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : java


[소스 코드]

	/** ========= [액티비티 백그라운드 상태 감지] ========= **/
	@Override
	protected void onUserLeaveHint() {
		super.onUserLeaveHint();
		Log.d("---","---");
		Log.d("//===========//","================================================");
		Log.d("","\n"+"[A_AA_Test_Java > onUserLeaveHint() 메소드 : 홈 키 이벤트 발생 감지]");
		Log.d("//===========//","================================================");
		Log.d("---","---");
		/**
		 * [추가 설명]
		 * 1. onUserLeaveHint 이벤트는 액티비티 백그라운드 상태를 감지합니다
		 * 2. 홈 키 이벤트는 onKeyDown 이벤트에서 감지를 할 수 없으므로 onUserLeaveHint를 통해서 감지합니다
		 * 3. 참고 사항 :
		 *    - 액티비티 >> 액티비티 인텐트 이동 시에도 onUserLeaveHint 이벤트가 발생합니다
		 *    - 액티비티 이동 시 intent.addFlags(FLAG_ACTIVITY_NO_USER_ACTION);
		 *      플래그를 추가해 onUserLeaveHint 이벤트 발생을 캔슬할 수 있습니다
		 * */
		try {
			//TODO [로직 처리 실시]

		}
		catch (Exception e){
			e.printStackTrace();
		}
	}




	/** ========= [모바일 키 이벤트 상태 감지 실시] ========= **/
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		//TODO [디바이스의 뒤로가기 키 이벤트 발생]
		if (keyCode == KeyEvent.KEYCODE_BACK) {
			Log.d("---","---");
			Log.d("//===========//","================================================");
			Log.d("","\n"+"[A_AA_Test_Java > onKeyDown() 메소드 : 디바이스의 뒤로가기 키 이벤트 발생]");
			Log.d("//===========//","================================================");
			Log.d("---","---");
			try {
				//TODO [액티비티 종료 실시]
				Intent intent = new Intent(A_AA_Test_Java.this, A_Main.class);
				intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); // 애니메이션 캔슬
				intent.addFlags(Intent.FLAG_ACTIVITY_NO_USER_ACTION); // onUserLeaveHint 캔슬
				startActivity(intent); // 인텐트 이동
				finish(); // 현재 화면 액티비티 finish
				overridePendingTransition(0,0);
			}
			catch (Exception e){
				e.printStackTrace();
			}
		}
		return true;
	}

[결과 출력]

[홈 키 이벤트 감지 화면]​

[인텐트 이동 화면]​


 

반응형
Comments