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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
#1

AsynkTask и утечки памяти - Программирование Android

04.05.2016, 15:25. Просмотров 133. Ответов 2
Метки нет (Все метки)

Вот смотрите, если я определил AsynkTask внутри активити, то AsynkTask у меня получается внутренний класс активити и содержит скрытую ссылку на активити. И AsynkTask завершается только когда завершается doInBackground() метод. То есть если даже в момент выполнения doInBackground, экран телефона перевернули(произошло пересоздание активити), то утечки впринципи все равно не должно быть по большому счету, потому что как только doInBackground выполнится, метод PostExecute, по ошибке, вернет результат в старый экземпляр активити и AsynkTask завершится. Так вот после того как AsynkTask завершится (выполнится doInBackground и PostExecute), он уже не будет ссылаться на старый экземпляр активити(до поворота)? Сборщик мусора сможет после этого удалить старый активити или даже после выполнения своих методов AsynkTask будет жить в памяти и держать ссылку на активити если так то почему? Просто из за чего здесь получается утечка памяти?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2016, 15:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос AsynkTask и утечки памяти (Программирование Android):

AsynkTask - Программирование Android
Почему AsynkTask использовать уже не рекомендуется??

Пример с AsynkTask - Программирование Android
Как из AsynkTask расположенного в одном package отобразить Bitmap в ImageView активити расположенном в другом package можете обьяснить или...

Изучаю AsynkTask - Программирование Android
Пытаюсь через AsynkTask получить get запрос и вывести объекты из ссылки. Но судя по логам сервера запрос туда да же не приходит, хотя...

Handler vs Service vs AsynkTask - Программирование Android
Есть 2 Activity, пусть A1 и A2. В методе onCreate() Activity A1 запускается новый поток, в котором определяются координаты местоположения...

Как связать ArrayList, ListView и AsynkTask? - Программирование Android
В AsinkTask в doInBackGround у меня есть массив final ArrayList<String> vkmass = new ArrayList<String>(); В цикле я его в этом же методе...

Как правильно отобразить массив сообщений в AsynkTask? - Программирование Android
как правильно отобразить массив сообщений в AsynkTask методе onPostExecute можете фрагмент небольшой привести?? TextView нужно для этого в...

2
Pablito
2496 / 1980 / 618
Регистрация: 12.05.2014
Сообщений: 6,923
Завершенные тесты: 1
04.05.2016, 15:32 #2
просто не пересоздавай активити при повороте и все

и вот лично я считаю что асинктаски внутри активити создают люди, которые не познали калбеки, интерфейсы и они не понимают как рефакторить код, но это не совсем по теме утечек
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
04.05.2016, 15:43  [ТС] #3
просто не пересоздавай активити при повороте и все
Ну впринципи это верно(я так и делаю), просто везде пишут что AsynkTask внутри активити создает утечку. Вот и интересно стало за счет чего же утечка возникает? Понимаю только, что AsynkTask может обратится в PostExecute() к элементам активити, которой уже не существует.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2016, 15:43
Привет! Вот еще темы с ответами:

При загрузке файла в AsynkTask в строке уведомлений вывести анимацию иконки загрузки - Программирование Android
При загрузке файла в AsynkTask хочу в строке уведомлений вывести анимацию иконки загрузки. Положил в drawable 6 файлов png. ...

Утечки памяти - Visual C++
Не могу найти и "убить" в программе СЕМЬ утечек памяти. Уже впору вешаться. Архив с полным проектом прилагается. За здравие свечку...

Утечки памяти - Delphi
После запуска программы выделяемая память равномерно и постоянно растет, а со временем сама программа крашиться. Мое предположение, не...

Утечки памяти - Delphi
Привет всем! Есть процедура, в которую параметрами передаются дин. массивы. Например: type TArr = array of <чего-то там>; ... ...


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

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

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