私は自分のAndroidアプリケーションでいくつかの重い計算を行っています。UIスレッドをブロックしたくないので、スレッドを拡張する別のWorkerThreadで計算を行います。これは正常に機能します。しかし、スレッドを停止するのに問題があります。スレッドを停止する通常の方法は、interrupt()またはvolatile変数を使用して、スレッドに終了するように指示することです。ただし、これはある種のループを持つスレッドでのみ機能します。外部ライブラリを使用してスレッドで計算を行っていますが、isInterrupted()-checkをこのライブラリに入れることができません。スレッドを停止する悪い方法は、stop()-Methodeを使用することです。これは非推奨ですが、私の場合、スレッドは内部値のみを操作するため、正しい方法です。残念ながら、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
Androidでスレッドを停止する他の方法はありますか?前もって感謝します!トビアス
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();
}
}