Приложение GWT/GAE для Android для Android

Привет, ребята, здесь много сообщений о возможностях автономного gwt. Но никто из них не отвечает на мои вопросы полностью.

Вот только несколько выдержек:

Выдержки из технологий GWT, GAE и Android, которые я использую:

  • RequestFactories
  • Запросы RPC
  • СДО
  • Кордова/PhoneGap
  • LocalStorage
  • html5 appcache

Так в чем моя проблема сейчас?

  • Когда я запускаю свое приложение без подключения к Интернету, он ничего не загружает. Я получаю ошибку 500, потому что нет подключения к Интернету.
  • Он не загружает HTML, CSS и JavaScript из автономного кеша.

Я теперь это потому, что мой webapp пытается подключиться к www.mypage.com и не получает никакого ответа.

Возможно ли, что я запускаю свою страницу из локальных ресурсов на своем устройстве Android и получаю ответ с моего сервера, если я в сети, и получаю ответ от своего локального хранилища, если у меня нет никакого соединения?

Я попытался реализовать его с локальными ресурсами (Compiled HTML, CSS и JavaScripts), но в этом случае он не подключается к дате с движка Google в любое время. Очевидный результат: нет данных.

1
nl ja de

1 ответы

Да, вы можете получить ответ от локального хранилища, если у вас нет подключения. Абсолютно.

В своем компоновщике, который расширяет com.google.gwt.core.ext.linker.AbstractLinker, повторяйте артефакты и проверьте, является ли это кодом rpc (1). Если это так, добавьте его в раздел сети вашего манифеста (2).

Затем в обратном вызове rpc (который будет терпеть неудачу, поскольку нет сети) настройте свой @Override public void onFailure (Throwable caught) {...} , чтобы получить данные из локального хранилища и дальше оттуда.

(1) пример -

private boolean isRPRCall(EmittedArtifact artifact) {
        return (artifact.getPartialPath().substring(artifact.getPartialPath().length() - 3)).equals("rpc");
    }

(2) мой выглядит следующим образом:

CACHE MANIFEST
file.jsp
/myapp/myapp.nocache.js
[etc. etc...]

NETWORK:
/myapp/34C9362A2B2ED625B4FE3FF8E80A4A60.gwt.rpc
/myapp/586D3102158048D2D56BA386A134648D.gwt.rpc
/myapp/CCA65B31464BDB27545C23C142FEEEF8.gwt.rpc
FALLBACK:
0
добавлено
@Sam, я думаю, это должно. Я бы подумал, что вы просто обрабатываете его в методе onFail, как вы делаете с rpc. Я также подозреваю, что вам не нужно указывать что-либо в вашем сетевом манифесте. В худшем случае, я ожидаю, что вам просто нужно выяснить, что вам нужно в NETWORK. Попробуй и посмотри. Я получал сообщение об ошибке для rpc о том, что код недоступен, поэтому я добавил его в манифест, и он работал. Просто попробуйте получить свои локальные данные в методе onFail вашего завода запросов.
добавлено автор user1258245, источник
Почему вы не можете перечислить его в автономном кеше? Если он не может быть указан там, тогда офлайн-приложение html5 не будет работать для вас. Вам нужно сделать сервлет таким образом, чтобы служить тем, когда манифест просит их? Раньше я использовал blobstore для обслуживания моего gwt JavaScript (чтобы обойти предыдущее ограничение на 1 гб), поэтому у меня был сервлет для обработки этого запроса. Я думаю, что это все, что вам нужно, и что вы должны поместить все ресурсы, которые будете использовать автономно в компоновщик. [помните, что вы можете использовать запись FALLBACK для обработки URL-адреса сервлета, если он отличается от того, как вы спрашиваете в своем коде]
добавлено автор user1258245, источник
Да, вы можете служить манифесту с сервлетом [извините, что я использую javax.servlet.Filter]. В настоящее время я использую другой манифест в зависимости от заголовка языка. Вы можете, скорее всего, включить любые изображения, которые вам нужны, переписывая/заканчивая манифест в фильтре. Убедитесь, что вы обслуживаете его с помощью response.setContentType («text/cache-manifest»); Это может быть тема для собственного потока, но я делаю это через context.getRequestDispatcher (имя_файла) .include (запрос, ответ);
добавлено автор user1258245, источник
Да, это нужно, или они не будут там, когда вам это нужно. Практически, однако, он загружает вашу страницу сначала, а затем получает материал для манифеста, поэтому ваш пользователь не сидит там, ожидая. Если это слишком много, и ваш кеш не может справиться с этим (есть ли ограничения????), Возможно, вы можете использовать FALLBACK и img.jpg img2.jpg и img3.jpg и т. Д. И т. Д. Все решите img4.jpg ( который просто говорит офлайн или что-то в этом роде).
добавлено автор user1258245, источник
Это также работает для RequestFactories?
добавлено автор Sam, источник
Это работает больше всего. Я создал компоновщик, который создает правильный файл манифеста. Но ответа недостаточно. Что вы делаете с динамическими изображениями? вы не можете перечислить его в автономном кеш-файле. Я получил приложение, работающее в автономном режиме, но без файлов. У вас есть идея для этого? espacially gae/blobservice?
добавлено автор Sam, источник
Если я перечисляю все изображения в манифесте - все изображения загружаются на первое место. не так ли? Я сервер приложение с различными изображениями для разных клиентов, поэтому я не могу его перечислить. Или вы думаете, что я могу создавать разные файлы манифеста для разных клиентов? Изображения не готовы во время компиляции. Могу ли я изменить манифест во время выполнения? Могу ли я использовать сервлет для обслуживания файла манифеста?
добавлено автор Sam, источник
Хорошо, если я это сделаю. Загружает ли мой браузер каждое изображение при первом запуске, которые включены в манифест?
добавлено автор Sam, источник
Да, есть ограничение, я знаю. По этой причине я думаю о том, чтобы реализовать его в своем приложении самостоятельно, чтобы обогнать это ограничение.
добавлено автор Sam, источник
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async