AppWidget의 update 주기에 대해 말씀드리겠습니다.
update 주기를 설정하는 방법은 여러가지가 있겠으나, 대략 다음중 하나를 선택하실 겁니다.
1. appwidget-provider XML 에서 updatePeriodMillis="0"
2. appwidget-provider XML 에서 updatePeriodMillis="원하는 시간만큼"
3. 아니면 프로그램 내에서 직접 AlarmManager를 통해
1. updatePeriodMillis="0"의 의미
- 이렇게 setting하면 3번과 같은 의미를 같습니다. onUpdate()는 프로그램에서 알아서 해야 하다는 말 입니다.
- 프로그램내에서 AppWidget 실행시 한번만 onUpdate()를 call 합니다.
- 이 후에 한번도 onUpdate()를 call하지 않으면, 상당한 시간이 흐른 후에 AppWidget에 setting해 놓은 기능들은, 특히 pending intent는 사라지게 되며 AppWidget은 기능을 제대로 작동되지 않습니다. 꼭 명심하세요.
2. updatePeriodMillis="원하는 시간만큼"
- 원하는 시간에 System에서 onUpdate() call 하게 되지만, 그 주기는 확신할 수는 없습니다.
- 최소시간은 30분입니다. 단위가 millisecond이니 30분 x 60초 x 1000=1800000 가 되겠습니다.
- 아무리 짧게 주어도 효과는 없습니다.
3. AlarmManager를 통해
- 2번 처럼 원하는 시간을 정할 수는 있을겁니다.
- 너무 짧은 시간을 주게 되면, 아마도 Failed Binder Transaction!!! 을 만나게 됩니다.
- AppWidget은 참 편하고 강력하며 iphone과 차별화된 기능이지만, 제가 보기에는 상당히 무겁습니다.
- 짧은 시간에 화면을 update하는 것은 금물입니다.
댓글 없음:
댓글 쓰기