Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
R1
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 6
1

Оптимальный способ передачи данных с сервера в приложение

25.10.2017, 13:38. Просмотров 270. Ответов 6

Всем привет! Нужна помощь в поиске оптимального способа решения задачи. Задача в следующем: в приложении нужно отобразить турнирную таблицу футбольного чемпионата - 20 команд, 10 колонок, 200 ячеек.
Вот что я пробовал:
1) На сервере данные хранились в хтмл-странице в виде текста: A1=Спартак A1x A2=ЦСКА A2x A3=Зенит A3x и так далее. Данные в приложение поступали так:
Java
1
 (new loadData()).execute("http://url.html");
А затем обрабатывались с присвоением значений переменным:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class loadData extends AsyncTask<String, Void, String> {
Document doc = null;
@Override
        protected String doInBackground(String... params) {
...
}
@Override
        protected void onPreExecute() {
                super.onPreExecute();
        }
        @Override
        protected void onPostExecute(String result) {
        super.onPostExecute(result);
...
            name[i] = result.substring(result.lastIndexOf("A"+(i+1)+"=")+8, result.lastIndexOf("A"+(i+1)+"x"));
            }
}
2) На сервере данные хранились в виде хтмл-страницы в читаемом виде - обычной турнирной таблицей. При этом каждая ячейка таблицы была закрыта в тег с уникальным именем. В приложение страница грузилась так:
Java
1
2
3
4
5
class loadData extends AsyncTask<String, Void, String> {
Document doc = null;
@Override
        protected String doInBackground(String... arg) {
                  doc = Jsoup.connect("https:/url").get();
Дальше шел разбор тегов:
Java
1
names = doc.select(".names");
и запись их в списки:
Java
1
2
3
for (Element titles : names) {
      nameslist.add(titles.text());
}
Ну и потом из списков уже значения раскидывались по переменным.

3) Та же турнирка на сервере, что и в п.2, но в приложение она поступает в WebView:
Java
1
webView.loadUrl("https://url");
Все три способа на некоторых моделях телефонов (к сожалению, в основном на последних и самых ходовых) потребляют слишком много оперативки - в полтора-два раза больше, чем у аналогичных приложений других разработчиков. Часто приложение вылетает.
Подскажите, есть ли другие способы получения данных с сервера и если есть, то какие? И возможно как-то снизить энергоемкость самого процесса загрузки данных?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2017, 13:38
Ответы с готовыми решениями:

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

Приложение под Android для фильтра передачи данных
Есть такая задумка: при раздаче wi-fi с android контролировать сайты, на которые осуществляется...

Нужно простое приложение для вкл/выкл передачи данных
Всем привет. На смартфоне примерно каждые 20 минут отключается интернет на 5 секунд(пропадает H или...

Оптимальный способ передачи данных между программами на c#
Здравствуйте. Ситуация следующая: есть 2 программы, между которыми необходимо обеспечить передачу...

Оптимальный способ сохранения данных
Здравствуйте! Делаю что-то типа записной книжки для продуктов: на форме комбобокс и несколько мемо....

6
Pablito
2838 / 2256 / 763
Регистрация: 12.05.2014
Сообщений: 7,894
Завершенные тесты: 1
25.10.2017, 13:48 2
вариант с webview убогий, без вариантов

без кода, в котором видно что там и как парсится и полного лога ошибки никто тебе не поможет
0
ExFau$t
767 / 632 / 158
Регистрация: 08.05.2012
Сообщений: 3,082
25.10.2017, 14:07 3
Сервер должен отдать уже максимально переваренную инфу телефонам, а не какие-то html или другой бредовый формат, который нужно ещё парсить полдня. Чаще всего это какой-нибудь json, где уже по первичным ключам все поля разбросаны, надо тупо сохранить в мобиле и всё, даже переменные объявлять не понадобится.
0
Pablito
25.10.2017, 14:29
  #4

Не по теме:

я думаю он пишет парсер какого-то (не его) сайта, естественно нет вообще или нет доступа к нормальному апи
JSOUP-ом все парсится в пару строк, главное знать что надо

в любом случае без лога ошибки - к гадалкам

0
R1
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 6
25.10.2017, 14:38  [ТС] 5
без кода, в котором видно что там и как парсится и полного лога ошибки никто тебе не поможет
Вопрос не в ошибке, а в том, какой подход вообще использовать.
Чаще всего это какой-нибудь json, где уже по первичным ключам все поля разбросаны
Спасибо! Буду искать в этом направлении.

Добавлено через 1 минуту
я думаю он пишет парсер какого-то (не его) сайта, естественно нет вообще или нет доступа к нормальному апи
Да нет, сайт мой. Просто опыта решения таких задач нет. Потому и зашел сюда.

Добавлено через 6 минут
JSOUP-ом все парсится в пару строк, главное знать что надо
Пункты 2 и 3 - именно им и парсил. Но не уверен, что это оптимальный способ.
0
Pablito
2838 / 2256 / 763
Регистрация: 12.05.2014
Сообщений: 7,894
Завершенные тесты: 1
25.10.2017, 14:45 6
если сервер свой, то все три способа не годятся
свой сервер по запросу должен отдавать какую-то структуру в json например
в приложении этот json парсится в модельки и по ним строится список или таблица
как сайт должен выдавать json - вопрос в тот раздел форума, на котором написан сервер

в приложении
http://square.github.io/retrofit/ - для вытягивания и парсинга json в модельки
0
R1
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 6
25.10.2017, 14:55  [ТС] 7
свой сервер по запросу должен отдавать какую-то структуру в json например
Да, именно этот вариант и буду пробовать. Щас почитал про Json - звучит красивше, чем три моих способа )) Ладно, всем спасибо за оперативную помощь!
0
25.10.2017, 14:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2017, 14:55

Универсальный способ передачи данных из дочернего окна, Родительскому
Есть такой сценарий : Передаётся информация из первого окна во второе, затем из второго в третье. ...

Ответы на 7 самых частых вопросов по Windows Forms, C++/CLI Edition - свой способ передачи данных между формами
Способ с использованием макросов. Средней сложности в реализации и понимании, не знаю, нарушает ли...

Возможные варианты передачи данных с не лотусового веб сервера в Lotus
Разрабатываю тему по получению данных с веб-формы расположенной не на лотусовом сервере в лотусовую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru