Android-веб-просмотр внутри службы? - PullRequest
5 голосов
/ 25 октября 2011

У меня есть приложение WebView в моем приложении для Android, из которого наш сервер вызывает много javascript.Я хочу внедрить систему, в которой сигнал с сервера разбудит / перезапустит приложение и выведет его на фронт, чтобы предупредить пользователя.Я знаю, что это ужасно неприятно, но в моем случае это необходимо.

Кажется, что единственный способ сделать это - включить WebView в Сервис (поскольку Операции могут быть уничтожены ОС в любое время).,Кто-нибудь знает, как это будет работать?Я читал, что WebViews могут находиться только в деятельности.

Спасибо !!

Ответы [ 2 ]

4 голосов
/ 25 октября 2011

Веб-представления могут постоянно присутствовать в действиях, поскольку они являются компонентом пользовательского интерфейса. Лучший способ решить эту проблему - разгрузить информацию, которую ваш javascript делает, в саму службу. Это как работает Android. Единственное другое решение состоит в том, чтобы сделать ваш javascript / серверный интерфейс достаточно отказоустойчивым, чтобы он мог в любой момент противостоять потере соединения. Для идей о том, как это сделать, я бы заглянул в модель REST. Если вы хотите получить лучшую идею по использованию REST с Android, я предлагаю это видео из Google IO . На сегодняшний день это один из моих любимых.

Что касается отправки сигнала с сервера на запуск активности, то в некоторой степени это возможно. Вам нужно что-то слушать на устройстве, скорее всего, сервис. Вы могли бы сделать, чтобы ваша служба сделала длинный опрос и поэтому просто сидела там в ожидании ответа. Когда он получит ответ от сервера, он может сделать

Context.startActivity(intent)

Где намерение - это явное намерение, указывающее действие, которое вы хотите начать. Тем не менее, сервис может быть убит также, если ресурсы становятся дефицитными на устройстве. Кроме того, подключение к Интернету может быть потеряно в любое время (это мобильные телефоны, и люди часто берут мобильные телефоны там, где у них нет подключения к Интернету).

Суть в том, что устройства не рассчитаны на 100% надежность с точки зрения подключения. Самое разумное для вас - изменить спецификации приложений, чтобы они были более отказоустойчивыми.

Это может звучать тупо, но я не могу сказать больше ничего, кроме «Не делай этого. Не делай этого никогда». Более конструктивно, я бы сказал, что если вы все делаете правильно, вы должны быть в состоянии отодвинуть свои вещи в фоновом режиме и никогда не беспокоить пользователя с этим. Помните, KISS, это не просто группа с армией. Это прекрасная философия. Держать его просто глупо. Возможно, вы захотите взглянуть на это видео , оно одно из моих любимых и может помочь вам прийти в другое состояние ума. Это полезно?

1 голос
/ 26 октября 2011

TomBomb, спасибо, что приняли мой предыдущий ответ, но я думаю, что у меня есть что-то еще для вас полезное. Вместо того, чтобы заставлять Activity выходить на передний план, почему бы не использовать Уведомление о статусной строке , чтобы позволить вашим пользователям узнать что-то новое с сервера?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...