Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Оптимизация приложения. Слишком часто вызывается GC - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Ошибка http://www.cyberforum.ru/android-dev/thread924060.html
Eclipse выдает такое "Call requires API level 9 (current min is 8): android.content.SharedPreferences.Editor#apply" на строчку: preferencesEditor.apply(); Как мне исправить? Как я понял,...
Программирование Android Не могу найти ошибку Выдает ошибку (unfortunately,*** has stopped) нз что делать вот логи 07-16 09:37:50.620: W/Resources(925): Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f09000e} 07-16 09:37:50.640:... http://www.cyberforum.ru/android-dev/thread923989.html
Как сделать общее системное меню для всех активностей? Программирование Android
в андроиде пока не сильно ориентируюсь. хочется сделть общее меню на все приложение в таком виде, как на примере не работает. StartActivity extends Activity { @Override public void...
Проблемы с вводом текста Программирование Android
Как сделать завершение введения текста энтером в эдитбоксе пропись в хмл?
Программирование Android Ограничение максимального FPS под Андроид 2.3.3 http://www.cyberforum.ru/android-dev/thread923919.html
Имеется приложение работающее через SurfaceView. Под Андроидом 4.x.x с количеством кадров в секунду все отлично, стабильные 60 FPS. Под 2.3.3 FPS возрастает до 75. Хочется иметь стабильные 60....
Программирование Android LoginActivity Подскажи небольшие примеры или статьи по LoginActivity... что то не могу найти ничего нормального.... подробнее

Показать сообщение отдельно
MonStar
19 / 19 / 3
Регистрация: 10.04.2011
Сообщений: 225
17.07.2013, 01:13  [ТС]
Цитата Сообщение от V0v1k Посмотреть сообщение
а то написали в теме "Оптимизация приложения", а код этого приложения не показываете.
друдно что-то советовать если не видно полной картины.
Сомневаюсь, что поможет лишняя сотня классов, которая затрагивает другие части приложения. По возможности могу показать, что где происходит конечно.

Метод ниже подключается к непрерывному потоку WebSocket'а и постоянно получает строки в виде JsonArray
Java
1
2
3
4
5
6
7
8
9
10
11
public void onMessage(String message) {
        try {
            jsonArray = new JSONArray(message);
            int lenght = jsonArray.length();
            for (int i = 0; i < lenght; i++) {
                model = new TickerInstrumentModel(jsonArray.getJSONObject(i));
                tickerContent.updateContent(model);
            }
        } catch (Exception e) {
        }
    }
Сначала парсится весь Array, а потом каждый объект в отдельности. Как я сказал по задумке встроенного JSON в Android это происходит в момент создания объекта. TickerInstrumentModel - это наследник JsonObject.

Потом модель передается в управление контентом, где метод isNeeded(instrument) решает, нужно нам это или нет. Если нет то он просто отпадает, если да, то сохраняется в Map. В итоге Map хранит 50 различных объектов (ключ всегда одинаковый), но с разными данными.
Java
1
2
3
4
5
6
7
8
9
    
private Map<String, TickerInstrumentModel> models;
 
public void updateContent(TickerInstrumentModel model) {
        String instrument = model.getInstrument();
        if (isNeeded(instrument)) {
            models.put(instrument, model);
        }
    }

Затем в момент, когда потребовалось получить все данные (предыдущие закончились) вызывается такой метод
Java
1
2
3
    public void requestContent(final IContentBuildCallback callback) {
        contentBuilder.build(models, settings, callback);
    }
Он отдает Map наверх в UI и я его отображаю в виде бегущей строки.

Добавлено через 1 минуту
Цитата Сообщение от V0v1k Посмотреть сообщение
ну так храните 10 объектов, вам же не нужно полностью пропарсить объект чтобы узнать его тип?
Нужно полностью парсить обязательно, иначе не узнать что внутри


Пока писал, что-то упустил. JSON парсится в момент создания объекта на сколько я знаю. Это
Java
1
new JSONArray(message);
и
Java
1
new TickerInstrumentModel(jsonArray.getJSONObject(i));
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru