Android - лучший и безопасный способ остановить поток - PullRequest
74 голосов
/ 14 декабря 2011

Я хочу знать, какой лучший способ остановить поток в Android. Я знаю, что могу использовать AsyncTask вместо него и что есть метод cancel(). Я должен использовать Thread с в моей ситуации. Вот как я использую Thread:

Runnable runnable = new Runnable() {
        @Override
        public void run() {
            //doing some work
        }
    };
new Thread(runnable).start();

Итак, кто-нибудь имеет представление о том, что является лучшим способом остановить поток?

Ответы [ 12 ]

0 голосов
/ 18 января 2018

Я использовал этот метод.

Looper.myLooper().quit();

Вы можете попробовать.

0 голосов
/ 18 февраля 2013

Внутри любого класса Activity вы создаете метод, который присваивает NULL экземпляру потока, который может использоваться как альтернатива устаревшему методу stop () для остановки выполнения потока:

public class MyActivity extends Activity {

private Thread mThread;  

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


        mThread =  new Thread(){
        @Override
        public void run(){
            // Perform thread commands...
    for (int i=0; i < 5000; i++)
    {
      // do something...
    }

    // Call the stopThread() method.
            stopThread(this);
          }
        };

    // Start the thread.
        mThread.start(); 
}

private synchronized void stopThread(Thread theThread)
{
    if (theThread != null)
    {
        theThread = null;
    }
}
}

Это работает длямне без проблем.

...