我新建了一个线程,在run里面有一个while循环。条件为true,中间有一个sleep,默认情况下它起来后会一直跑在那里,现在需要在程序退出的时候将这个线程结束掉,用了它的stop函数,可以达到这种效果,但这个函数已经不在推荐使用了,于是在网上找了一下,在这里找到了:
http://bbs.tarena.com.cn/thread-80104-1-1.html
于是现在的具体实现是:
public void autoUpdateTimeline() {
// TODO Auto-generated method stub
autoUpdateFriendsTimelineThread = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while (!autoUpdateFriendsTimelineThread.isInterrupted()) {
System.out.println("Auto Refreshing Timeline");
sRefreshFreq = getPreferenceAttr(
getResources().getString(R.string.refreshtime), sRefreshFreq);
try {
if (handler != null) {
handler.sendEmptyMessage(FRIENDSTIMELINE_UPDATE);
}
Thread.sleep(1000 * Integer.parseInt(sRefreshFreq));
} catch (InterruptedException e) {
// TODO Auto-generated catch block
Utils.log(LOGTAG, "InterruptedException");
e.printStackTrace();
break;
}
}
}
});
autoUpdateFriendsTimelineThread.start();
}
通过isInterrupted能中断循环。
在退出程序地时候调用:
autoUpdateFriendsTimelineThread.interrupt();
这样就实现了手动关闭一个线程。
如何手动关闭一个java线程