@Override
protected Void doInBackground(String... params) {
answer = "Вернулся " + params[0];
do {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.gc();
try {
WeakCallback.get().getResult(answer);
} catch (Exception e) {
e.printStackTrace();
Log.d(LOG_TAG,"активити пересоздан");
break;
}
} while (x > 1);
return null;
}
Экспериментирую. Запустил Активити, а через него перехожу на второе активити, в нем запускаю AsyncTask
. Он крутится в бесконечном цикле. Ссылку на активити держит в WeakReference
.Выхожу из активити, на первое активити. AsyncTask
продолжает работу, пока я не начну грузить картинку и этим самым пробуждаю GC
. Мое активити удаляется из памяти, я ловлю исключение и если его не обработать выходом из AsyncTask
, то AsynckTask
никогда не умрет (ну пока приоритет GC
не доедет до него, а до этого момента будет жрать заряд и память). А вопрос собственно в том, правильно ли использовать оператор break
. Return
не могу применить, так как к убитой активити обратится. Завершит ли break
работу AsyncTask
? Из цикла он выходит однозначно.
AsyncTask может быть отменен в любое время при вызове cancel (boolean). После isCancelled (), будет возвращать true. Дальше вызовется onCancelled (Object), вместо onPostExecute (Object). Для гарантии отмены задачи как можно быстрее, вы должны проверять возвращаемое значение isCancelled () в doInBackground (Object []), например, внутри цикла как у вас в примере.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Вопрос такойЯ Android разработчик, пишу на котлине
Всем привет, не могу разобраться почему не сохраняется сущность DateException в базу данных при вызове метода контроллера addExceptionToEventКонтроллер...
Я хотел бы спросить можно ли привязать KeyListener к клавиатуре, то есть можно ли сделать так чтобы при запуске программы она не открывала окно,...