Как использовать Looper с asyncTask?Как использовать Looper с asyncTask?
Метод doImBackground вызывается для программного создания TableLayout под названием MyResultTable. В свою очередь MyResultTable имеет обработчик, который вызывается onTouch во время MotionEvent.ACTION_MOVE
.
После получения жалоб на использование дескриптора внутри asynchTask, я решил запустить обработчик на UIThread. Но это приводит к тому, что мой метод onTouch имеет медленный ответ. Итак, мой вопрос: как использовать петлитель с asyncTask?
код UIThread:
activity.runOnUiThread(new Runnable() {
public void run() {
handler.post(mResizeViews);
}
});
Моя Looper попытка: (не работает: пустой экран)
protected MyResultTable doInBackground(Void... params) {
Looper.prepare();
MyResultTable table = new MyResultTable(context, other);
Looper.loop();
return tabl;
}
Уверены ли вы? Я знаю, что у вас обычно есть отличные ответы. Но я всегда собираю свои таблицы в фоновом режиме, а затем использую 'onPostExecute', чтобы передать пользовательскую таблицу в linearLayout, удерживая ее. В противном случае андроид, как правило, говорит, что мой интерфейс работает слишком много. –
@CoteMounyo: «В противном случае андроид, как правило, говорит, что мой интерфейс работает слишком много» - используйте такие инструменты, как Traceview, чтобы найти реальную причину проблем с производительностью. – CommonsWare
Хорошо. Поэтому я пробую ваши предложения. И он работает (+1). Никакой жалобы от android о UI не работает. Но мой слайдер все еще не гладкий. Чтобы начать движение, требуется некоторое время, а затем перейдите туда, где пользователь перемещает палец. Ссылка http://stackoverflow.com/questions/17958671/increase-sensitivity-to-user-touch –