Проблема в использовании AsyncTask - PullRequest
0 голосов
/ 13 марта 2011

Я изучаю AsyncTask, я пытался напечатать сообщение Toast внутри метода doInBackground, возможно ли использовать в нем сообщения Toast? Код работает нормально, сообщение Toast удалено .. получая ошибку как Cant, создайте обработчик внутри потока, который не вызвал Looper.prepare ()

Ответы [ 2 ]

0 голосов
/ 14 февраля 2012

пока вашего ответа достаточно, вам может быть интересно узнать, почему вы не можете использовать Toast внутри «doInBackground» AsyncTask.Цель AsyncTask - запустить что-то в фоновом режиме.В вашем случае весь код, который вы написали, не нужно помещать в фоновый поток.Асинхронные задачи используются для таких вещей, как загрузка / сохранение постоянно работающего цикла ... и т. Д.Если вы ДЕЙСТВИТЕЛЬНО хотите использовать AsyncTask и внедрить вещи в поток пользовательского интерфейса переднего плана - например, Toast - тогда вам нужно получить ссылку на самый верхний контекст / действие и вызвать:

myContext.runOnUiThread(new Runnable(){
    @Override public void run{
         Toast.....
    }
});
0 голосов
/ 14 марта 2011

Понял :)

protected class Asyctast extends AsyncTask<String, Integer, Integer>
{

    @Override
    protected Integer doInBackground(String... params) {
        // TODO Auto-generated method stub


        Log.d("Asynctask", ""+params);  
Looper.prepare();   

         ImageThumbnailsActivity m = new ImageThumbnailsActivity();

            Toast.makeText(ImageThumbnailsActivity.this,""+params ,Toast.LENGTH_SHORT).show();
            final Dialog dialog_options = new Dialog(ImageThumbnailsActivity.this);
            dialog_options.setContentView(R.layout.option);
            dialog_options.show();
        Looper.loop();
        return null;

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