我有一个启动和停止作业方法,用于检查我的连接是否得到维护。这适用于软电话应用程序,因此只要用户打开了应用程序,就需要打开连接。这些方法的代码如下
public void startJob(){
mJobThread = new Thread(new Runnable() {
@Override
public void run() {
while (!Thread.currentThread().isInterrupted() && Thread.currentThread().isAlive()) {
try {
Thread.sleep(7000);
mJobHandler.post(myJobRunnable);
} catch(InterruptedException e){
System.out.println("startJob Interrupt Runnable");
Thread.currentThread().interrupt();
return;
} catch (Exception e) {
Log.v("startJob Runnable", e.getLocalizedMessage());
}
}
}
});
mJobThread.start();
}
public void stopJob(){
if(mJobHandler != null){
mJobHandler.removeCallbacks(myJobRunnable);
}
if(mJobThread != null) {
mJobThread.interrupt();
}
}
我得到的问题是RuntimeException(没有任何崩溃的应用程序)说
W/MessageQueue( 1946): java.lang.RuntimeException: Handler (android.os.Handler) {421ac808} sending message to a Handler on a dead thread W/MessageQueue( 1946): at android.os.MessageQueue.enqueueMessage(MessageQueue.java:309) W/MessageQueue( 1946): at android.os.Handler.enqueueMessage(Handler.java:623) W/MessageQueue( 1946): at android.os.Handler.sendMessageAtTime(Handler.java:592) W/MessageQueue( 1946): at android.os.Handler.sendMessageDelayed(Handler.java:563) W/MessageQueue( 1946): at android.os.Handler.post(Handler.java:323) W/MessageQueue( 1946): at com.zxd.activity.Manager$5.run(Manager.java:256) W/MessageQueue( 1946): at java.lang.Thread.run(Thread.java:841)
第256行是try{
中的startJob
。我在用户登录时调用startJob
,在用户注销时调用stopJob
。我有一个服务,有时会建立连接,但不会调用startJob
或stopJob
为什么我会收到此异常,我该怎么做才能解决此问题?