我有一个应用程序以两种不同的方式与其他设备通信:发送声音信号和通过 Wifi 发送消息。为了处理 Wifi 通信,我创建了一个服务,它有一个线程监听广播消息。对于我拥有的声音信号,我也进行了线程监听。所以总共有两个线程,当我想按下按钮时我想杀死它们。
在主 Activity 中,当我按下按钮时调用此方法:
public void onStop() {
super.onStop();
mHelloService.stop();
//This is the Sounds Thread
mListenThread = null;
if(D) Log.e(TAG, "-- ON STOP --");
}
在服务中我有这个功能来停止 Wifi-Thread
public synchronized void stop() {
System.out.println("Close service");
if (mHelloThread != null) mHelloThread = null;
}
我试试这个,但线程继续工作。我读到有人推荐使用的另一个问题:
mHelloThread.interrupt();
但我试过了,我得到了这些错误:
08-30 20:18:08.592: D/AndroidRuntime(7312): 关闭 VM 08-30 20:18:08.592: W/dalvikvm(7312): threadid=1: 线程退出未捕获异常 (group=0x419bc930) 08 -30 20:18:08.592: E/AndroidRuntime(7312): 致命异常: main 08-30 20:18:08.592: E/AndroidRuntime(7312): java.lang.NullPointerException 08-30 20:18:08.592: E /AndroidRuntime(7312): 在 android.nacho.SoundLocalizer.HelloMessage.stop(HelloMessage.java:82) 08-30 20:18:08.592: E/AndroidRuntime(7312): 在 android.nacho.SoundLocalizer.SoundLocalizer.onStop( SoundLocalizer.java:349) 08-30 20:18:08.592: E/AndroidRuntime(7312): 在 android.nacho.SoundLocalizer.SoundLocalizer$3.onClick(SoundLocalizer.java:405) 08-30 20:18:08.592: E /AndroidRuntime(7312): 在 android.view.View.performClick(View.java:4202) 08-30 20:18:08.592: E/AndroidRuntime(7312):在 android.view.View$PerformClick.run(View.java:17340) 08-30 20:18:08.592: E/AndroidRuntime(7312): 在 android.os.Handler.handleCallback(Handler.java:725) 08- 30 20:18:08.592: E/AndroidRuntime(7312): 在 android.os.Handler.dispatchMessage(Handler.java:92) 08-30 20:18:08.592: E/AndroidRuntime(7312): 在 android.os。 Looper.loop(Looper.java:137) 08-30 20:18:08.592: E/AndroidRuntime(7312): 在 android.app.ActivityThread.main(ActivityThread.java:5039) 08-30 20:18:08.592: E/AndroidRuntime(7312): at java.lang.reflect.Method.invokeNative(Native Method) 08-30 20:18:08.592: E/AndroidRuntime(7312): at java.lang.reflect.Method.invoke(Method. java:511) 08-30 20:18:08.592: E/AndroidRuntime(7312): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 08-30 20:18:08.592:E/AndroidRuntime(7312): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 08-30 20:18:08.592: E/AndroidRuntime(7312): 在 dalvik.system.NativeStart.main (本机方法)
你建议我做什么??非常感谢