私はスレッドを開始するためのアンドロイド(API 21)主な活動をしています。 ボタンを押すとスレッドとメインアクティビティが閉じます。 これは、スレッドを中断してアクティビティを終了するのに適したソリューションですか? 私はスレッドを待っているアンドロイドの主な活動を停止する方法を修正するには?
mythread.cancel()
finishAndRemoveTask();
を呼び出そう。しかしmainactivity /プログラムは、スレッドがまだ生きているので、それがクラッシュした閉じたとき。ボタンがクリックされたときに
だから私は、コードを変更して書いてみる:
mythread.interrupt();
finishAndRemoveTask();
これは良い解決策か? (スレッドが無限に実行されるため、私は)(mythread.joinを使用できるかどうか私は知らない...
はOnCreate関数で、私が作成したスレッドに
myThread_read = new thread_read(handler_read);
//starting thread
myThread_read.start();
を開始私はRunnableを使用する必要があります知っているが、このコード。Threadクラスを拡張し スレッドのコードは次のとおりです。
private class thread_read extends Thread {
Handler mHandler;
String logString ;
protected volatile boolean running;
/* constructor */
thread_read(Handler h) {
mHandler = h;
}
public void start()
{
Logger.WriteString("thread_read", "Starting");
running = true;
super.start();
}
public void cancel()
{
Logger.WriteString("thread_read", "Stopping");
running = false;
}
public void run() {
while (running) {
try {
Thread.sleep(500); // 500 msecs
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
break;
}
// do works
}
}
}
}
これは、mythread.interrupt()を削除できることを意味します。 OnDestroyメソッドで mythread.cancel()を挿入しますか? @Override public void onDestroy(){ mythread.cancel(); super.onDestroy(); } – Gab74