시계어플을 만드는 중인데요
홈런처가 종료됬다가 다시 실행됬을때
홈화면의 위젯이 갱신이 안되고있습니다.
홈화면이 재시작될때 위젯이 알아챌수 있는 방법이 있나요??
구글링 해본봐로는 홈이 재시작될때 onEnabled함수가 불려진다고 하는데
테스트해본결과 그런것 같지두 않고
마켓에서 같은종류의 어플 받아서 테스트 해보면
홈이재시작되도 갱신이 잘되는데
저는 도저히안되네요
관련해서 알고계신분 답변좀 부탁드립니다.
할룽!
* 다섯 콜백 메소드 들은 다음과 같은 역할을 한다.
onUpdate():
일정한 간격을 두고 위젯을 갱신하기 위해 호출되는 콜백 메소드, 갱신 간격은 updatePeriodMillis 에 의해 결정되며, 그 값은 AppWidgetProvideInfo 섹션(2번 항목에서 정의한 파일)에 정의되어 있다. 또한 이 메소드는 사용자가 위젯을 등록했을때 호출되나, 프로그램에서 configuration Activity를 정의한 경우 호출되지 않는다. 그러므로 configuration Activity를 정의한 경우에는 반드시 이 메소드를 처음에 호출하는 작업을 해야 한다.
참조: http://developer.android.com/guide/topics/appwidgets/index.html#Configuring
onDeleted();
사용자의 위젯이 App Widget host 에서 제거될 때 호출 된다.
onEnabled():
위젯이 처음 실행되어 생성되었을 때 호출되는 콜백 메소드. 예를 들어 동일한 위젯 인스턴스를 두 개 생성 한다면, 이 콜백 메소드는 첫 번 위젯 인스턴스를 생성했을 때 에만 호출된다.
onDisabled():
위젯의 마지막 인스턴스가 호스트에서 제거될 때 호출된다. onEnabled() 메소드에서 초기화 한 리소스를 정리하는 작업을 수행할때 이용된다.
onReceive():
모든 브로드 캐스트를 수신한 경우와 위에서 언급된 각 콜백 메소드들이 호출되기 직전에 호출된다. 일반적으로 이 콜백 메소드를 정의할 필요는 없는데, 기본 AppWidgetProvider의 구현에서 모든 위젯 브로드 캐스트를 필터링 하여 상황에 맞는 콜백 메소드들을 호출하기 때문이다
답변감사합니다 덕분에 다시한번 처음부터 보면서 해결 되었습니다.
혹시 저같이 구현해서 문제되시는 분들 있으실까봐 자답 남깁니다.
위젯 업데이트시에는 무조건 싱글 RemoteViews인스턴스를 사용하여야 합니다.
저처럼
update에 RemoteViews인스턴스를 생성 해서 뿌린뒤
다른메소드에서 RemoteViews 다시 생성해서 표시하게되면
홈화면의 종료와 같은 일이 생기면 update시 RemoteViews인스턴스가 달라
메소드에서 뿌려주는 기존의 ui가 갱신이 안되는 거였습니다.
다른메소드를 통해 위젯을 업데이트 하게될때에는 반드시 RemoteViews를 인자로 전달해 주세요 ㅠㅠ
해결되서 다행이네요 ㅠㅠ 답변달아주신분들 감사합니다.




홈런처 재실행되면 onUpdate가 호출되는걸로 알고있는데 확인해보세요.