Android Как сохранить мой AsyncTask от сбоя - PullRequest
0 голосов
/ 06 мая 2011

Эй, я новичок в Android и попытался реализовать класс с большим количеством строк кода, создав класс-обертку, делающий его новым потоком.В рамках этого действия он вызывает кучу других классов, и хотя мой поток пользовательского интерфейса загружается нормально, я думаю, что мой поток вычислений истекает по времени или имеет какую-то другую форму сбоя, потому что когда я его запускаю, я получаю диалог ANR.Чтобы увидеть, как далеко он терпит неудачу, я вставил println в один из моих внутренних классов, и, кажется, он терпит неудачу очень рано.Есть ли ограничение по времени для AsyncTasks?или я что-то делаю не так, что приводит к сбою?Любой совет высоко ценится.

Ответы [ 2 ]

0 голосов
/ 07 мая 2011

Коди Если бы мне пришлось отлаживать, я бы обернул весь doInBackground в попытку перехватить исключение e и сделать Log.d (TAG, "doInBackground", e).Малкольм прав, что это не должно приводить к сообщению ANR, если вы не блокируете поток пользовательского интерфейса.

0 голосов
/ 06 мая 2011

Нет, ограничения по времени нет. Но вы должны внимательно следить за тем, какие методы вы используете, когда выполняете какую-то длительную работу. AsyncTask имеет метод doInBackground, который вызывается из рабочего потока, а другие вызовы выполняются из потока пользовательского интерфейса. Если вы получаете ANR, это означает, что вы выполняете свою работу в потоке пользовательского интерфейса, что неправильно. Вместо этого вы должны сделать это методом doInBackground.

Ознакомьтесь с Документация AsyncTask и Статья безболезненной резьбы .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...