У меня недавно возникла проблема, когда я вызвал асинтаску из действия и вернул некоторые данные. Мой пользовательский интерфейс замерзнет, и я получаю ANR. Я, похоже, решил это, используя комбинацию решений для обеих вещей, которые, как я думал, это может быть, как асинтеза, так и аррайалист, который я выполнял.Лучший способ отменить asynctask
У меня был обратный вызов асинхронности для загрузки данных асинхронно. Я догадался, хотя мне нелегко было понять, что асинститут сохраняется после onpostexecute? В любом случае я назвал this.cancel() в onpostexecute.
После некоторого чтения немного, функция cancel() при расписании задачи отменяется и что она может сохраняться после запроса. Поэтому я должен спросить, есть ли лучший способ отменить асинтез после того, как вы закончите с ним? Будет ли в большинстве случаев отменено()? Есть ли способы избежать необходимости называть cancel() вообще при выполнении обратного вызова.
Что вы делаете ('call this.cancel()' in' onPostExecute() ') является избыточным. Когда выполнение достигло 'onPostExecute()', поток ждет сборщика мусора. Если другой «AsyncTask» нуждается в потоке, этот поток может быть переработан. Но вы не должны беспокоиться об этом. Здесь возникает вопрос: почему ваш «AsyncTask» вводит пользовательский интерфейс? – Vikram
@vikram есть приличный шанс, я был неправ, что это проблема асинтеза, и это мог быть мой ArrayList. Казалось, что планировать это. Отказ был лишним, но я не был уверен. Я не был уверен в том, как его можно сохранить и связать пользовательский интерфейс после вызова onpostexecute. Мой UI ANR не происходит до тех пор, пока не вызывается onpostexecute. – user2097211
Вы можете написать еще один вопрос, чтобы получить помощь по проблеме ANR. – Vikram