본문 바로가기
+)기록/과제

정리사항 54 - 서비스 클래스 내에서 브로드캐스트 리시버 사용(등록, 해제)

by AppJinny 2023. 4. 26.

*브로드캐스트

-관심있는 이벤트가 발생할 때 마다 전송

https://developer.android.com/guide/components/broadcasts?hl=ko 

 

*서비스 클래스 내에서 브로드캐스트 리시버 사용

-브로드캐스트 리시버 생성(적용)

-(사용할 위치인 서비스 클래스 내에 생성함)

   //브로드캐스트 리시버
    private BroadcastReceiver apiBroadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals("ACTION_INTERVAL_CHANGED")) {
                // BroadCast에서 받아온 healthChkInterval 값
                String newHealthCheck = intent.getStringExtra("newHealthCheck");
                int healthChkInterval = Integer.parseInt(newHealthCheck);

                // 현재 Timer가 실행중이라면, 취소 후 다시 시작
                if (timer != null) {
                    timer.cancel();
                    startTimer(healthChkInterval);
                }
            }//"ACTION_INTERVAL_CHANGED"
        }
    };

    //BroadCastReceiver 등록
    private void registerApiBroadcastReceiver() {
        IntentFilter filter = new IntentFilter();
        filter.addAction("ACTION_INTERVAL_CHANGED");
        registerReceiver(apiBroadcastReceiver, filter);
    }

-registerApiBroadcastReceiver(); 는 onStartCommand에서 시작함

 

    @Override
    public void onDestroy() {
        super.onDestroy();

        stopTimer();
        unregisterReceiver(apiBroadcastReceiver);
    }

-unregisterReceiver(apiBroadcastReceiver); 하여 서비스가 종료될 때 같이 종료

 

*참고

https://developer88.tistory.com/m/entry/Broadcast-Receiver-%EB%93%B1%EB%A1%9D%ED%95%98%EA%B3%A0-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EB%B0%9B%EC%95%84%EC%84%9C-%EC%B2%98%EB%A6%AC%ED%95%98%EA%B8%B0

 

Broadcast Receiver 등록하고 시스템 이벤트 받아서 처리하기

안드로이드의 시스템은 이벤트가 발생할 때,broadcast를 보내줍니다. 이름이 broadcast이니, 방송을 한다고 해야할까요.안드로이드 내부적으로 이벤트가 발생을 했다고 알려주는 것인데요, 안드로이

developer88.tistory.com