Android Dev Guide에 명시된대로 위젯을 더 자주 업데이트하려면 장치를 깨우지 않는 알람을 설정하려면 AlarmManager
을 사용해야합니다.AlarmManager를 사용하여 위젯을 수동으로 업데이트하십시오.
원칙적으로 AppWidgetProvider
클래스에서 제공하는 표준 메커니즘과 xml 파일에 android : updatePeriodMillis를 사용하여 손쉽게 설정하지 마십시오.
부탁드립니다. 가이드는 "AlarmManager를 사용하여 RTC
또는 을 사용하십시오."라고 표시하지만 정확히 위젯을 업데이트하려는 의도를 어떻게 보내야합니까 !!!
누구나 기본 동작을 모방 한 PendingIntent
을 형성해야하는 코드를 알려주십시오. 나는 위젯 ID를 얻는 방법을 알지 못한다. 어떤 행동을해야하는지 등등 ... 슬픈 dev 가이드는 그 시점에서 설명을 그만 둔다! 조치가 필요한 추가 품목으로는 무엇이 필요합니까?
누가 왜 30 분보다 자주 업데이트하고 싶어하는지 관심이 있습니다. 내 위젯은 다음 버스가 역에서 출발 할 때를 보여줍니다. 20 분마다 버스가 있습니다. 그래서 두 가지 옵션이 있습니다 : 매분마다 위젯을 업데이트하고, 다음 버스의 출발 시간을 표시하십시오. (그게 내가 원하는거야 !!) 그렇지 않으면 다음 버스의 출발 시간을 알려주십시오. 그래서 적어도 20 분마다 업데이트해야합니다!
지금 : 장치가 잠 들어있을 때, 물론 이것은 절대로 깨어나서는 안됩니다. 따라서 dev 가이드의이 절을 이해하면 올바르게 구현할 수 있습니다. 아무도 내가 틀렸다고 생각하니? 아, 또 다른 한가지 : 기기가 잠자기 상태 일 때 잠자기 기기로 인해 위젯을 업데이트해야하고 내 알람이 울리지 않을 때 잠자기 상태가되면 즉시 업데이트됩니까 ???
도움 주셔서 감사합니다.
추신 : 왜 위젯 공급자의 xml 정의가 불리언 스위치로 "장치를 깨우지 마십시오"라고 간단하게 말할 수 없는지 궁금합니다. 그렇게되면 처음부터 삶이 훨씬 쉬워집니다! 아무리 장치를 깨우려면 어떤 종류의 위젯이 필요합니까 ??? ;-)
이것은 내가 지금까지왔다,하지만이 작동하지 않습니다 얼마나 멀리이다 - 아무 일도 발생하지 :
private void startAlarm(Context pContext) {
Log.d(TAG, "startAlarm");
AlarmManager am = (AlarmManager) pContext.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent("android.appwidget.action.APPWIDGET_UPDATE");
intent.setClass(pContext, getClass());
PendingIntent pi = PendingIntent.getBroadcast(pContext, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
am.set(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + 1000, pi);
}
큰 문제가 정말 현재의 위젯 ID를 "기억"하는 지점에 도착하지 않는 것이 :
다음은 알람 관리기에 관한 것입니다. onUpdate가 얻는 id 배열은 항상 FULL리스트가되는 것은 아닙니다. 새 widget을 추가 할 때 구성 대화 상자가 "OK"단추 또는 sth와 같이 올바르게 끝나기 전에이 새 ID로 호출됩니다. 왜??? 게다가, 위젯이 쫓겨나는 유일한 방법은'onDelete'입니다 -하지만 지금은 작동하지 않습니다. 공급자는 이미 알려진 위젯 ID를 저장하기 위해 환경 설정을 사용해야합니까? – Zordid
@ Zordid :'AppWidgetManager'에서'getAppWidgetIds()'를 호출하십시오. ID가 어떤 구성과 함께 사용되는지 알지 못한다면 많은 도움이되지 않습니다. 개인적으로 나는 여러 인스턴스가 의미가있는 앱 위젯을 작성하지 않았으므로 동일한 콘텐츠로 모든 인스턴스를 업데이트하기로 결정했습니다. – CommonsWare
아! 'getAppWidgetIds()'!! 멋지다, 어떤 예도 이제까지 그것을 보여줬다! 어떻게 알았어 ?? :-) – Zordid