Как ваши темы? Это ванильные нити или подклассы AsyncTask?
Если это экземпляры объекта AsyncTask
, вы можете использовать метод cancel()
для его отмены, а затем внутри метода doInBackground()
вы можете проверить метод isCancelled()
, чтобы увидеть, действительно ли он был отменен и затем выйдите изящно.
Псевдокод ниже:
private YourTask taskRef;
public void btnStartHandler() {
taskRef = new YourTask();
taskRef.execute();
}
public void btnStopHandler() {
taskRef.cancel();
}
и затем в вашей AsyncTask:
public Void doInBackground(Void... arg0) {
// Background loop start
if (this.isCancelled()) {
return;
}
// Background loop continue...
}
Если вы используете потоки, вы можете прервать их, поймать исключение и обработать его там. Кроме того, вы можете создать метод, который вы вызываете из onCreate()
с именем initApp()
или что-то, что инициализирует все. Вы также можете использовать этот initApp()
из обработчика нажатия кнопки STOP, чтобы сбросить значения до значений по умолчанию при запуске.