0
thread = new Thread()
        {
            @Override
            public void run() {
                while(!requestedToExit)
                {
                    SystemClock.sleep(3000);
                    Log.d("debug", "in");
                }
            }
        };

所以一个按钮有一个事件,每次我点击它都会启动线程(如果前一个线程不活动)。

所以我尝试使用 thread.start() 但它抛出线程已经启动。我尝试了.run(),没有任何反应,每次单击按钮时我也尝试过,并且可以再次运行它,创建一个新线程并启动它:什么都没有。

一些想法?


使用可运行:

   r= new Runnable(){

            public void run() {
                while(!requestedToExit)
                {
                    Log.d("debug", "in");
                    SystemClock.sleep(3000);

                }
            }
        };

然后我在我的听众中使用:

thread = new Thread(injection);
thread.start();

但我只是第一次看到调试,之后他再也没有进入过。

提前致谢

4

1 回答 1

5

JavaDoc -

多次启动一个线程是不合法的。特别是,线程一旦完成执行就可能不会重新启动。

相反,java.lang.Runnable在必要时使用并创建一个新线程来运行它。

你需要做的是:

Runnable r = new Runnable() {
    public void run() {
        ....
    }
};

然后,当您要启动它时:

Thread t = new Thread(r);
t.start();

您需要始终创建一个新线程来运行该可运行线程。

于 2012-04-26T11:21:55.743 回答