2010-12-29 4 views
0

나는 응용 프로그램에 패키지되어 위젯을했습니다 나는 위젯/응용 프로그램의 컨텍스트/라이프 사이클에 대한 몇 가지 의심했습니다 :정보/라이프 사이클

  • 응용 프로그램과 위젯을 공유 동일 프로세스, 그리고 연속적으로 싱글 톤?
  • 서비스를 제공한다면 원격 서비스 여야합니다.
  • 위젯을 업데이트하는 프로세스의 수명주기는 어떻게됩니까? 위젯 전용인가요? 일반적으로

매우

+0

http://developer.android.com/guide/topics/appwidgets/index.html 충분하지 않습니까? –

+0

아니요, 나는 그것을 읽었으며 그 정보로 내 질문에 대답 할 수 없습니다. – lujop

답변

1

하는 응용 프로그램과 위젯을 공유 동일한 프로세스

당신은 당신의 코드를 보면, 당신은 발견 할 것이다 apreciated 될 위젯 라이프 사이클/컨텍스트에 대한 정보 모든 클래스에서 AppWidgetProvider을 확장하는 클래스입니다. 이것은 앱 위젯에 의해 차지 된 부분의 홈 스크린 UI를 업데이트하는 코드입니다.

매니페스트를 보면 AppWidgetProvider<receiver>으로 추가 한 것을 확인할 수 있습니다. 이는 AppWidgetProviderBroadcastReceiver임을 나타냅니다. Manifest-registered BroadcastReceivers은 매우 짧은 시간 동안 살며 - onReceive()을 처리하기에 충분히 길다.

따라서 프로세스가 이미있는 경우 (예 : 사용자가 지금 내 활동에 포함되어있는 경우) 잠시 동안 "애플리케이션과 위젯이 동일한 프로세스를 공유 할 수 있습니다."그리고 AppWidgetProvideronUpdate() 가 실행되면 AppWidgetProvider이 동일한 프로세스에있게됩니다. 그러나 응용 프로그램이 실행 중이 아닌 경우 AppWidgetProvider에 대한 onUpdate()은 이전에 어떤 코드도 호스팅 한 적이 있거나 없었던 어떤 프로세스에서 실행됩니다.

그리고 연속적으로 싱글 톤?

이 정보에 의존해서는 안됩니다.

서비스를 제공한다면 원격 사용자 여야합니다.

"원격"의 정의는 절대 아닙니다.

위젯을 업데이트하는 프로세스의 수명주기는 어떻게됩니까? 위젯 전용인가요?

위 참조.

+0

잠시 동안 응용 프로그램과 WidgetProvider가 실행 중일 때 원격 서비스를 사용하지 않아도된다는 것을 알고 있습니다. 그들이 프로세스를 공유하는 동일한 시간에? – lujop

+0

@lujop : 예. 즉,'AppWidgetProvider'가 다른 프로세스와 동일한 프로세스에서 실행 중인지 미리 알 수 없습니다. 이것은'AppWidgetProvider'가 서비스와 통신하기 위해'startService()'를 사용해야하는 몇 가지 이유 중 하나입니다. – CommonsWare