I have a start and stop method that checks if my connection is supported. This is for a softphone application, so the connection should be as long as the user opens the application. The code for these methods is below.
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();
}
}
The problem I'm getting a RuntimeException (nothing crashes the application), saying
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►92)
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
, ?