개발중인 앱이 Application 단에서 특정 기능이 동작 하게 되는데 해당 기능이 푸시 노티가 올때도 동작을 해서 문제가 되었습니다.
푸시 노티는 background에서도 동작하는 기능이지만
Push notification 또는 BroadcastReceive 를 받게 되었을때 Activity는 호출이 안되지만 Application은 실행이 됩니다.
간단히 이야기 해서 Foreground와 Background를 정확히 구분지어야 했습니다.
이런저런 방법을 찾다가 ActivityLifecycleCallbacks 이라는것을 알게 되었습니다.
더욱이 해당 콜백을 사용하고 있는 텔레그램 코드도 찾게 되었습니다.
https://github.com/DrKLO/Telegram/blob/master/TMessagesProj/src/main/java/org/telegram/ui/Components/ForegroundDetector.java
이쁘게 잘 만들어지 클래스는 가져다 쓰기로 했습니다.
방법은 정말 간단합니다.
리스너를 등록 하고 해당 콜백에 원하는 동작을 할때 코드만 입력 해주면 됩니다.
public class MyApp extends Application { @Override public void onCreate() { super.onCreate();
ForegroundDetector foregroundDetector = new ForegroundDetector(MyApp.this); foregroundDetector.addListener(new ForegroundDetector.Listener(){ @Override public void onBecameForeground() { Log.d("visu4l", "Foreground"); } @Override public void onBecameBackground() { Log.d("visu4l", "Background"); } }); } }
아래 샘플 프로젝트를 참고 하셔도 됩니다.
'Computer' 카테고리의 다른 글
스타벅스 와이파이 자동 연결 (1) | 2020.02.06 |
---|---|
[AWS] VM Import/Export를 사용하여 VM을 이미지로 가져오기 에러 (0) | 2018.01.31 |
adb 쉽게 쓰기 (0) | 2017.11.06 |
RHEL 7 에 Docker 수동 설치(how to manually install apache on ubuntu) (0) | 2017.11.06 |
APK 파일 패키지명 변경하기(Change Package Names of APKs) (0) | 2017.11.04 |