2013-12-20 2 views
0

내 코드에서 서비스에 의해 서비스되는 위젯이 있습니다. 이제 응용 프로그램이 강제로 중지되면 서비스도 중지됩니다. 또는 내 app 서비스가 죽으면 일부 작업 킬러 응용 프로그램으로 인해App 위젯 상태 백그라운드 서비스가 종료 될 때

그래서 위젯을 업데이트 할 사람이없고 위젯은 좀비처럼 행동합니다.

이제 응용 프로그램 활동을 시작하면 위젯의 ID가 없기 때문에 위젯을 다시 활성화 할 수 없습니다.

이러한 상황을 처리하는 가장 좋은 방법은 무엇입니까?

답변

0

위젯이 업데이트를 다시받을 준비가되었음을 서비스에 알리기 위해 LocalBroadcastManager을 사용할 수 있습니까? (위젯 ID를 전달). 예를 들어, WidgetProvider의 onUpdate 메소드에서.

+0

전화가 GPS를 사용하는 차량의 주행 속도를 표시하는 위젯이 있다고 가정 해보십시오. 따라서 위젯은 매 20 초마다 업데이트해야합니다.이 경우 OnUpdate는 30 분 이상 호출됩니다. 그 사이에 안드로이드/일부 작업 킬러로 인해 위젯을 업데이트하는 방법으로 서비스가 중단되는 경우. – mSO

+0

SharedPreferences에서 구성된 위젯 및 위젯 ID의 목록을 유지 관리합니다. 서비스가 시작되면 목록을 읽고 그에 따라 사용하십시오. – Kuffs

+0

:) 글쎄, 결국 그렇게 했어.하지만 나는 나쁜 해킹이라고 생각하고 있었다. 사실 WidgetUpdateService와 AppWidgetProvider라는 코드에 3 개의 엔티티 WakeAliveService가 있습니다. WakeAliveService는 WidgetUpdateService에 의해 선택되는주기적인 브로드 캐스트를 전송하여 ApplicationClass에 저장된 목록의 위젯을 업데이트합니다. AppWidgetProvider는 OnUpdate/OnDelete의 ID로 목록을 업데이트합니다. 위젯 id가 업데이트되면 목록이 다시 prefs에 저장됩니다. 응용 프로그램이 다시 시작되면 목록이 읽 힙니다. 다시 부팅하면이 목록이 지워집니다. 이것이 올바른 접근이라고 생각합니까? – mSO

관련 문제