2011-10-25 2 views
5

나는 우리의 안드로이드 애플 리케이션에서 많은 자바 스크립트가 우리 서버에 의해 호출되는 WebView를 가지고있다. 나는 서버로부터의 신호가 깨어나고/다시 시작되어 사용자에게 알려주는 시스템을 구현하고자한다. 나는 이것이 끔찍하게 불쾌하지만 내 경우에는 필요하다는 것을 안다.서비스 안의 Android webview?

이 작업을 수행하는 유일한 방법은 WebView를 서비스에 게시하는 것입니다 (활동은 언제든지 OS에 의해 종료 될 수 있기 때문에). 아무도 이것이 어떻게 작동 하는지를 알고 있습니까? WebViews는 Activities에만있을 수 있다는 것을 읽었습니다.

감사합니다.

답변

4

WebView는 UI 구성 요소이기 때문에 활동에만있을 수 있습니다. 이 문제를 해결할 수있는 가장 좋은 방법은 자바 스크립트가 서비스 자체에 수행하는 통신을 오프로드하는 것입니다. 이것은 안드로이드가 작동하는 방법입니다. 유일한 해결책은 자바 스크립트/서버 통신이 언제든지 결점없는 연결을 견딜 수있을 정도로 내결함성이 있도록 만드는 것입니다. 이 작업을 수행하는 방법에 대한 아이디어는 REST 모델을 살펴 보겠습니다. 안드로이드와 함께 REST를 사용하는 것에 대해 더 잘 알고 싶다면 video from Google IO을 제안하십시오. 오늘까지, 그것은 나의 마음에 드는 것 중의 1 개다.

활동을 시작하기 위해 서버로부터 신호를 송신하는 한, 이것은 어느 정도 가능성이 있습니다. 기기를 청취 할 필요가 있습니다. 가장 가능성있는 서비스입니다. 당신은 당신의 서비스를 오래 설문 ​​조사를 할 수 있으며 거기에 응답을 기다리고 앉아있을 수 있습니다. 서버에서 응답을 받으면

Context.startActivity(intent) 

여기서 intent는 시작할 활동을 지정하는 명시적인 의도입니다. 즉, 리소스가 부족 해지면 서비스가 중단 될 수 있습니다. 게다가 인터넷 연결은 언제든지 잃어 버릴 수 있습니다 (이들은 휴대 전화이며 사람들은 종종 인터넷 연결이없는 휴대 전화 장소를 차지합니다).

결론은 장치가 연결성면에서 100 % 신뢰할 수 있도록 설계되지 않았다는 것입니다. 가장 현명한 일은 앱 사양을 변경하여 내결함성을 강화하는 것입니다.

소리가 날 수도 있지만 "하지 마세요. 지금까지하지 마세요." 더 건설적으로, 나는 당신이 일을 제대로한다면, 당신은 당신의 물건을 배경으로 밀어 넣을 수 있고 그것으로 사용자를 괴롭히지 않아야한다고 말할 것입니다. 기억하십시오, 키스, 그것은 군대를 가진 밴드가 아닙니다. 그것은 아름다운 철학입니다. 그것을 간단하게 어리 석다. 이 video을 살펴보고 싶을 수도 있습니다. 내 마음에 드는 것 중 하나이며, 마음의 상태가 달라 지도록 도와 줄 수 있습니다. 도움이 되었습니까?

+0

좋습니다. 내 앱을 앞으로 가져 오는 문제에 대해 설명해 주시겠습니까? – TomBomb

+0

질문에 대한 답변을 추가했습니다. –

+0

고마워 커티스, 큰 도움이됩니다. 저는 항상 활동/서비스에 전적으로 의존하지 않는 방법을 찾고 있습니다. 나는 위에서 설명한대로 활동을 시작하지만 의도가 시작되면 내 앱에 다시 집중해야합니다. startActivity()를 호출 할 때 사용자가 다른 응용 프로그램에 있으면 응용 프로그램이 백그라운드에 남아 있습니다. 이견있는 사람? – TomBomb

1

TomBomb, 제 이전 대답을 수락 해 주셔서 감사합니다. 그러나 제가 다른 용도로 사용할 것으로 생각됩니다. 액티비티를 전경에 강요하는 대신 서버에 새로운 내용이 있음을 알리기 위해 Status Bar Notification을 사용하면 어떨까요?