私はスレッドと混同しています。私はいくつかのスレッドを実行しており、いくつかのアクティビティでは新しいスレッドが作成され、クリーンアップされます。だから私がアプリケーションを終了しようとするとき、私はアボートを使用します。私はスレッドが閉じた罰金を実行しているかどうかをチェックしました。しかし、私は間違いを犯すと "... 11以上" ...任意のアイデア私は間違って何ですか?スレッドの実行を停止しようとするとアクティビティを破棄できません
public void run() {
while (abort_) {
//doeing stuff
}
}
synchronized public void abort() {
abort_ = true;
if (ioio_ != null) {
ioio_.disconnect();
}
}
メインは()デストロイです:
public void onDestroy() {
super.onDestroy();
Start_settings.stopSetThread();
bool = false; //stop screanThrea
if(ioio_thread_.isAlive()){
ioio_thread_.abort();
}
}
ので、onDestroy()メソッドは、そのthrouws呼び出されたときに:私は私の問題を解決し
W/dalvikvm(8672): threadid=1: thread exiting with uncaught exception (group=0x40018578)
E/AndroidRuntime(8191): FATAL EXCEPTION: main
E/AndroidRuntime(8191): java.lang.RuntimeException: Unable to destroy activity {android.io/android.io.Main}: java.lang.NullPointerException
E/AndroidRuntime(8191): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:2676)
E/AndroidRuntime(8191): at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:2694)
E/AndroidRuntime(8191): at android.app.ActivityThread.access$2100(ActivityThread.java:117)
E/AndroidRuntime(8191): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:968)
E/AndroidRuntime(8191): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(8191): at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime(8191): at android.app.ActivityThread.main(ActivityThread.java:3687)
E/AndroidRuntime(8191): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(8191): at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime(8191): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
E/AndroidRuntime(8191): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
E/AndroidRuntime(8191): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(8191): Caused by: java.lang.NullPointerException
E/AndroidRuntime(8191): at android.kvisio.Main.onDestroy(Main.java:364)
E/AndroidRuntime(8191): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:2663)
E/AndroidRuntime(8191): ... 11 more
: は、私はラインを逃しUPDATEDスレッドが開始されたときにフラグを設定し、thread.isAlive()メソッドの代わりにフラグをチェックすることによって、しかし、私の質問は残っています: thread.isAlive()でスレッドを実行していないことをチェックすると、なぜこのような例外がスローされますか? お時間をいただきありがとうございます。
public void onDestroy() {
Start_settings.stopSetThread();
bool = false; //stop screanThrea
if(!ioio_thread_.isAlive()){
ioio_thread_.abort();
}
super.onDestroy();
}
デバッグとあなたは私が 'の場合((ioio_thread_.isAlive()){ ioio_thread_.abort()はライン354上の364' –
@LalitPoptaniライン'でnullを取得しているかどうか確認する。 } ' そして、この時点でioio_thread_は決して作成されません。 – Hia
あなたのスレッドインスタンスがヌルであるように見える場合、' if(ioio_thread_!= null){....} ' –