Я делаю тяжелые вычисления в моем приложении для Android. Поскольку я не хочу блокировать UI-поток, я делаю вычисления в отдельном WorkerThread, который расширяет Thread. Это отлично работает. Но у меня проблемы с остановкой потока. Обычный способ остановить поток - использовать interrupt () или переменную volatile, чтобы сообщить потоку, что он должен завершиться. Но это работает только в потоках с какой-то петлей. Я делаю вычисления в потоке, используя внешние библиотеки, и я не могу поставить проверку isInterrupted () в эту библиотеку. Плохой способ остановить поток - использовать метод stop () - метод, который устарел, но в моем случае это правильный путь, поскольку поток манипулирует только внутренними значениями. К сожалению, Android не поддерживает stop (), поскольку он не поддерживает устаревшие методы потоков.
10-18 10:26:39.382: ERROR/global(13919): Deprecated Thread methods are not supported.
10-18 10:26:39.382: ERROR/global(13919): java.lang.UnsupportedOperationException
Есть ли у вас какой-нибудь другой способ остановить тему в андроиде?
Заранее спасибо!
Tobias
PS: код, показывающий проблему:
public void method()
{
WorkerThread t = new WorkerThread();
t.start();
synchronized (this)
{
try
{
wait(1000);
} catch (InterruptedException e)
{
Log.e("",e.toString(),e);
}
}
//t.stop(); //not supported in android
//t.interrupt(); //can not be checked by the thread
}
class WorkerThread extends Thread
{
public void run()
{
externalLibrary.heavyComputation();
}
}