Обновить
9

Пользователь

1
Подписчики
Отправить сообщение
заказ №24542
уже час прошел, книги нету(
через какое время книга должна прийти на почту?
AsyncTask is designed to be a helper class around Thread and Handler and does not constitute a generic threading framework. AsyncTasks should ideally be used for short operations (a few seconds at the most.) If you need to keep threads running for long periods of time, it is highly recommended you use the various APIs provided by the java.util.concurrent package such as Executor, ThreadPoolExecutor and FutureTask.


второй абзац из документации
Вы просто неправильно используете AsyncTask, он не должен использоваться для длительных операций. Вместо этого нужно использовать сервис, причем отсоединять листенеры в onPause и подсоединять в onResume, тогда никаких проблем не будет
Разреженный массив можно было сделать как LinkedHashMap в java
А можно узнать как вы получили api мобильных операторов? Вы с ними сотрудничаете или просто отсниффали протокол?)
Из документации:
When your activity receives a call to the onStop() method, it's no longer visible and should release almost all resources that aren't needed while the user is not using it. Once your activity is stopped, the system might destroy the instance if it needs to recover system memory. In extreme cases, the system might simply kill your app process without calling the activity's final onDestroy() callback, so it's important you use onStop() to release resources that might leak memory.

Не всегда уничтожается процесс при нехватке памяти, могут просто освобождаться activity
Еще одна причина ваших утечек памяти — onDestroy. Вызов этого метода не гарантируется и там не стоит освобождать критические ресурсы и отсоединять листенеры. Последний гарантированный метод, который вызовется при уничтожении activity это onPause.
Обычно для таких вещей используются проверенные фреймворки, например, RoboSpice. Который выполняет задачи в сервисе и кэширует http запросы на диск. В onResume подсоединяются листенеры чтобы получить результат. В onPause отсоединяются чтобы не вернуть результат когда fragment уничтожен.
Если запрос выполнился в то время когда fragment скрыт, то запрашиваются данные из кэша.
Если же процесс будет убит, то данные опять же берутся из кэша.
Логика по подсоединению, отсоединению листенеров так же как взятие результатов из кэша делается в BaseFragment.
Все что остается — просто вызвать метод загружающий данные.
Все уже давно изобретено)
Еще можно парсить мегабайтные json'ы на android. В этом случае конечно же лучше выбрать Jackson
Спасибо за статью. Не знал что namespace tools нужен для preview.
Просто распакуйте jar'ку с большим кол-вом методов и скомпилируйте проект, потом распакованное содержимое jar'ки добавьте в скомпилированные сорцы, а после примените proguard. Все лишнее отрежет.

Этот подход я описывал здесь
habrahabr.ru/post/219801/
s7.postimage.org/dvix8wngb/Untitled.png
здесь тоже будете использовать sp?
Не стоит всегда использовать sp, т.к. при изменении размера шрифта в настройках вся верстка может поехать. И используйте px для divider'ов если они должны быть 1px, т.к. если указать 1dp, то на ldpi устройствах 1dp округлится в 0px
robospice + retrofit, наверное, самое лучшее что можно использовать для rest запросов. Минисуют, видимо, те кто до сих пор использует AsyncTask
Давно уже не использую Loaders, т.к. в android «появились» сервисы
зачем методы replaceAdapter/swapAdapter? Например, класс TextView обходится одним методом setText и он не только устанавливает текст в первый раз, но и меняет в последующие
минусуют ребята из Mail.ru которые не используют чужие библиотеки и по хардкору пишут весь код сами?
в 4.4 его начали рефакторить)
в некоторых версиях android она 128)

Информация

В рейтинге
Не участвует
Работает в
Зарегистрирован
Активность