2010-05-15 4 views
14

저는 x 분마다 몇 가지 작업을 수행하도록 구성 할 수있는 백그라운드 서비스를 제공합니다. 내 서비스가 해당 작업을 수행 할 때마다 업데이트되는 위젯을 구현하고 싶습니다. 그러나, 위젯을 홈 화면에 추가 할 때를 제외하고 어떤 식 으로든 호출되는 AppWidgetProvider의 onUpdate 메서드를 가져올 수 없습니다.서비스에서 위젯을 업데이트하는 방법은 무엇입니까?

나는 APPWIDGET_UPDATE 인 텐트를 보냈지 만 onRepdive 메소드가 호출 되었기 때문에 AppWidgetProvider가 인 텐트를 받았지만 onUpdate는 호출되지 않았습니다. 서비스에서 위젯 업데이트를 실행할 수있는 방법이 있습니까?

답변

19

자신을 RemoteViews으로 만들고 Service에서 바로 위젯을 업데이트하십시오. 다음을 통해 AppWidgetManager을 받게됩니다.

AppWidgetManager mgr=AppWidgetManager.getInstance(this); 

그 밖의 모든 기능은 정상적으로 작동합니다.

참고 : - 당신이 정말로, 기존 AppWidgetProvider이 일을 강제 구성 요소에 대한 사용자 지정 작업과 함께 방송을 보내고, 당신이 그것을 얻을 때 onReceive()에서 onUpdate() 직접 호출합니다.

+0

감사! 두 번째 제안은 내가 한 일이며 매력처럼 작동합니다. 왜 내가 그 생각을하지 않았는가 ... :) – Franklin

+0

onUpdate에는 배열 int [] appWidgetIds가 인수로 필요합니다. onReceive 메서드에있을 때 어떻게 계산합니까? –

+2

@Guido :'AppWidgetManager'에서'getAppWidgetIds()'를 호출하십시오 : http://developer.android.com/reference/android/appwidget/AppWidgetManager.html – CommonsWare

관련 문제