aSyncTask создан из обработчика - PullRequest
0 голосов
/ 18 марта 2012

Вот что я пытаюсь сделать в первую очередь.Я пытаюсь запустить MapView, который захватывает местоположение пользователя и загружает наложение с данными, которые меняются в зависимости от местоположения пользователя.

Обзор кода: у меня есть MapView, который захватывает местоположение текущего пользователя при создании.Используемое locationOverlay вызывает Runnable при первом исправлении:

locationOverlay.runOnFirstFix(centerAroundFix);

Этот Runnable, centerAroundFix, запускает aSyncTask.Как только я вызываю «новый aSyncTask», выдается эта ошибка:

Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

Задача асинктазы - извлекать данные, создавать наложение и добавлять наложение.Создание и выполнение asynctask отлично работает вне Runnable.

Ответы [ 2 ]

0 голосов
/ 18 марта 2012

Вы должны создать обработчик в UIThread.Например, как член класса:

public class Activity extends Activity{
    private Handler handler = new Handler();        
}
0 голосов
/ 18 марта 2012

Не уверен, что я этого еще не видел ...

Не могу создать обработчик внутри потока, который не вызвал Looper.prepare ()

Я почти уверен, что это дублирующий вопрос.

Редактировать: работает.Вот мой кодЗавершение вызова updateLocation () с помощью «mHandler.post»:

private Handler mHandler = new Handler(Looper.getMainLooper());

private Runnable centerAroundFix = new Runnable() {
    public void run() {
        /* Jump to current location and set zoom accordingly */
        map.getController().animateTo(locationOverlay.getMyLocation());
        map.getController().setZoom(12);
        /* This is a different thread.  I need to call this from a thread that has a 'Looper' prepared. */
        mHandler.post(new Runnable() {
            public void run() {
                updateLocation();
            }
        });
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...