Я работаю над приложением в режиме реального времени. Я написал часть, которая обрабатывает входящее сообщение. Когда я получаю сообщение, я вставлю записи в SQ-LITE
и инициирую обратный вызов, чтобы заметить пользовательский интерфейс для обновления (ListView
). В обратном вызове я реализую несколько вещей для обновления пользовательского интерфейса. Я использую адаптер курсора. В обратном вызове я запустил AsyncTask
, в фоновом режиме, я запрошу базу данных, чтобы получить историю чата. В onPostExecute
я буду использовать курсор этого запроса из фона и назначить адаптеру и обновить интерфейс.Android как остановить/отменить AsyncTask, когда запущено слишком много AsyncTask?
Так что мой вопрос: Если есть много входящих сообщений, это вызовет множество AsyncTask
и обновит UI много раз. Так что он сделает ListView
очень «лаг», и даже пользователь ничего не сможет сделать. Как я могу остановить/отменить AsyncTask
и обработать только последнюю версию, так как я получу всю историю чатов в базе данных, это означает, что последний запрос к истории чата в базе данных должен быть правильным.
Может ли кто-нибудь предложить, как остановить AsyncTask
или любые другие идеи для работы над этим делом?
Похоже, вам нужна очередь 'AsyncTask', которая будет управлять их количеством ... но есть небольшая проблема с остановкой' AsyncTask'. См. Это сообщение для ссылки http://stackoverflow.com/questions/12971882/cancel-all-asynctask. –