Notice
Recent Posts
Recent Comments
Link
투케이2K
217. (TWOK/WORK) [개선 요청] 안드로이드 장기간 백그라운드 상태 인 앱을 포그라운드 전환 시 앱 재실행 요청 개발 - ActivityLifecycleCallbacks 본문
투케이2K 업무정리
217. (TWOK/WORK) [개선 요청] 안드로이드 장기간 백그라운드 상태 인 앱을 포그라운드 전환 시 앱 재실행 요청 개발 - ActivityLifecycleCallbacks
투케이2K 2026. 5. 27. 20:20728x90
반응형
[제 목]
주제 : 투케이2K 업무 정리
타이틀 : 투케이 / 2k / 업무 정리
제목 : [개선 요청] 안드로이드 장기간 백그라운드 상태 인 앱을 포그라운드 전환 시 앱 재실행 요청 개발 - ActivityLifecycleCallbacks

[내 용]
------------------------------------------------------------------------------
[개발 및 테스트 환경]
------------------------------------------------------------------------------
- 제 목 : [개선 요청] 안드로이드 장기간 백그라운드 상태 인 앱을 포그라운드 전환 시 앱 재실행 요청 개발 - ActivityLifecycleCallbacks
- 테스트 환경 : Android / ActivityLifecycleCallbacks / LAUNCHER
- 사전) 👉 ActivityLifecycleCallbacks 간략 설명
>> Application.ActivityLifecycleCallbacks 는 앱 전체에서 모든 Activity의 생명주기 변화를 한 곳에서 감시/처리할 수 있게 해주는 인터페이스입니다.
>> Application.ActivityLifecycleCallbacks 사용 시 각 Activity마다 onCreate, onStart 등을 일일이 구현하지 않고도 공통 로직을 중앙에서 관리할 수 있습니다.
>> Application.ActivityLifecycleCallbacks 활용 예시 :
- 화면 전환 로그 수집 (Analytics)
- 앱Foreground / Background 판단
- 공통 UI 처리 (예: 다이얼로그, 테마 적용)
- Activity 스택 관리
- 광고 삽입 타이밍 제어
- 디버깅 및 추적
>> Application.ActivityLifecycleCallbacks 사용을 위한 AndroidManifest.xml 등록 방법 :
<application
android:name=".MyApplication"
... >
</application>
>> 안드로이드 Activity 라이프사이클 예시 :
- onCreate → onStart → onResume → (Running)
- onPause → onStop → onDestroy
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[이슈 사항]
------------------------------------------------------------------------------
1. 🟥 장기간 앱 사용 방지 및 주기적 앱 재실행 , 앱 버전 체크를 위해 일정 시간 앱을 재실행 하지 않은 경우 앱을 재실행할 수 있도록 기능 구현 요청
2. 🟥 기능 구현 요청 내용 정리 :
>> 특정 앱 실행 후 일정 시간 동안 (ex : 3 시간) 앱을 재실행 하지 않은 경우 경고 알림 팝업창 표시 요청
>> 특정 앱 실행 시 마다 앱 버전 체크를 수행하며, 앱이 업데이트가 필요한 경우 앱을 업데이트 한 이후에 앱을 사용할 수 있도록 구현 요청
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[원인 파악 및 증상 재현]
------------------------------------------------------------------------------
1. ✔️ 특정 앱 실행 후 일정 시간 동안 (ex : 3 시간) 앱을 재실행하지 않고 백그라운드 상태로 전환 수행
2. 🟥 현재 상황 - 일정 시간이 지난 후 휴대폰 작업 목록에 있는 앱을 다시 포그라운드 전환 시 경고 팝업창 없이 앱 사용 가능한 상태 확인
>> 안드로이드 프로젝트에 애플리케이션 ActivityLifecycleCallbacks 를 사용해 각 액티비티 동작 상태는 확인 가능한 상태
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[조치 내용]
------------------------------------------------------------------------------
1. 🟦 앱 실행 시 <intent-filter> 로 등록 된 런처 액티비티와 ActivityLifecycleCallbacks 을 통해 감지 되는 액티비티 라이프 사이클 onResume 상태에서
시간 비교 수행 및 일정 시간 (ex : 3 시간) 앱을 지속 사용 중인 경우 다시 앱을 실행 하도록 Alert 알림 팝업창 표시 수행
2. 🟦 변경 된 로직 간략 설명 :
>> 앱 실행 시 <intent-filter> 로 등록 된 런처 액티비티 (ex : 로딩 화면) 에서 onCreate 이벤트 감지 시 현재 날짜 및 시간 상태 저장 (yyyyMMddHHmmss)
>> 애플리케이션 ActivityLifecycleCallbacks 이벤트 감지 콜백에서 onResume 이벤트가 감지 된 경우 현재 날짜 및 시간 상태 확인 수행 (yyyyMMddHHmmss)
- 👉 ActivityLifecycleCallbacks 를 통해 감지할 수 있는 라이프 사이클 이벤트 콜백 종류 :
$ onActivityCreated : Activity 생성됨 (onCreate 이후)
$ onActivityStarted : 화면에 보이기 시작
$ onActivityResumed : 사용자와 상호작용 가능
$ onActivityPaused : 다른 화면으로 가기 직전
$ onActivityStopped : 화면에서 완전히 사라짐
$ onActivitySaveInstanceState : 상태 저장
$ onActivityDestroyedActivity : 종료
>> 런처 액티비티 실행 시 저장한 시간과 onResume 액티비티에서 감지 된 시간 각 시간 차이 확인 수행
>> 일정 시간 (ex : 3 시간) 이 지난 경우 Alert 경고 팝업창 표시 수행
3. 🟦 애플리케이션 ActivityLifecycleCallbacks 이벤트 감지 예시 코드 첨부 :
public class A_Application extends Application implements Application.ActivityLifecycleCallbacks {
public static final String ACTIVITY_NAME = "A_Application";
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) { }
@Override
public void onActivityStarted(@NonNull Activity activity) { }
@Override
public void onActivityResumed(@NonNull Activity activity) { }
@Override
public void onActivityPaused(@NonNull Activity activity) { }
@Override
public void onActivityStopped(@NonNull Activity activity) { }
@Override
public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle outState) { }
@Override
public void onActivityDestroyed(@NonNull Activity activity) { }
}
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[참고 사이트]
------------------------------------------------------------------------------
▶️ [Application 애플리케이션 클래스 ActivityLifecycleCallbacks 상속 후 Activity 액티비티 라이프 사이클 감지]
https://kkh0977.tistory.com/4875
https://blog.naver.com/kkh0977/223264773475?trackingCode=blog_bloghome_searchlist
▶️ [Android] 푸시 (push) 알림 포그라운드 , 백그라운드 , 앱 kill 상태 클릭 이벤트 로직
https://kkh0977.tistory.com/2436
https://blog.naver.com/kkh0977/222861938632?trackingCode=blog_bloghome_searchlist
▶️ [간단 소스] 안드로이드 UsageStatsManager UsageEvents 특정 시간 동안 앱 포그라운드 , 백그라운드 전환 시간 확인
https://kkh0977.tistory.com/8856
https://blog.naver.com/kkh0977/224297112575?trackingCode=blog_bloghome_searchlist
▶️ [LifecycleObserver 라이브러리 사용해서 액티비티 포그라운드 및 백그라운드 상태 확인]
https://kkh0977.tistory.com/447
https://blog.naver.com/kkh0977/222260425851?trackingCode=blog_bloghome_searchlist
▶️ [Android] 라이프사이클 onCreate 재호출 이슈 (reCall)
https://kkh0977.tistory.com/3323
https://blog.naver.com/kkh0977/222938687189?trackingCode=blog_bloghome_searchlist
▶️ [업무 이슈] 안드로이드 static 변수 선언 한 휘발성 데이터 유실로 데이터 null 전송 이슈
https://kkh0977.tistory.com/8706
https://blog.naver.com/kkh0977/224222577173?trackingCode=blog_bloghome_searchlist
------------------------------------------------------------------------------
728x90
반응형
'투케이2K 업무정리' 카테고리의 다른 글
Comments
