티스토리 뷰

300x250
300x250



Android target SDK 를 Android O(API level 26) 이상으로 올린 후 기존에 잘 동작하던 widget 의 click event (pending intent) 가 동작하지 않았다.

 

Android O 에서 암시적 브로드캐스트(Implicit broadcast) 인텐트 제한이 적용되었기 때문이다.

 

암시적 브로드캐스트(Implicit broadcast) 를 묵시적 브로드캐스(Explicit broadcast) 로 변경 후 동작을 확인해보니 AppWidgetProvider 의 onEnable / onDisabled 함수가 호출되지 않았다.

    • onEnable : App widget 이 처음 생성될 때 불림. 같은 위젯을 여러개 띄어도 첫 번째 위젯을 띄울 때만 호출.
    • onDisabled : App widget 이 마지막으로 삭제될 대 불림.

열심히 googling 해봤지만 딱히 원하는 답을 찾지 못했다가 알아낸 사실!!!

AppWidgetProvider 의 onReceiver 에서 super 를 호출해야 해당 메소드가 호출 된다.

 

물론, onEnable / onDisabled 함수가 호출되지 않는 이유가 요 한 케이스는 아니겠지만 다른 설정이 이상 없을 때는 onReceiver super 를 호출했는지 확인해보자!

 



728x90
댓글