Что происходит с этим потоком, работающим в конце, после его завершения? - PullRequest
6 голосов
/ 07 ноября 2011

У меня есть эта тема, которая загружает несколько изображений с сервера.Поэтому после загрузки изображений я вызываю обработчик и продолжаю обновление пользовательского интерфейса.Так как stop () для потока устарела, я не могу его использовать.У меня есть два вопроса здесь.

  1. Что происходит с этим потоком в конце? (Означает, что после того, как я вызову метод обработчика, что произойдет с ним).
  2. ИЛИ как мне остановить этот поток без использования stop ()?

Вот мой код.

handler=new Handler()
    {
        public void handleMessage(Message msg)
        {
            if(msg.what==0)
            {
                //UI Updation takes place. 
            }
        }
    };



final Thread t = new Thread(new Runnable() {
        public void run() {
            Log.i("Inside Thread", "Downloading Images...");
                     myDownlaodMethod();
            handler.sendEmptyMessage(0);
        }
    });
    t.start();

Ответы [ 2 ]

6 голосов
/ 07 ноября 2011

Нить закончится и умрет сама по себе. Вы не должны заканчивать это самостоятельно. Вы не сможете перезапустить его, не создав новый объект Thread. Сборщик мусора будет обрабатывать любую память, которую нужно освободить. Объект будет оставаться в памяти до тех пор, пока вы удерживаете ссылку на него. Удалите ссылку, и сборщик мусора удалит объект, как и любой другой.

0 голосов
/ 07 ноября 2011

Вы должны заглянуть в ExecutorService и Executors .

Если он такой же, как обычная Java, он обеспечивает мощное управление потоками, включая отключение всех потоков одновременно.

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