我新建了一个线程,在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线程

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.