线程在java android中不起作用

时间:2013-10-19 13:53:51

标签: java android

我是android和java的全新爱好者。所以,请耐心等待。所以,我有以下代码(仅提取): -

Thread timer=new Thread();
try{
    timer.sleep(2000);
}
catch(InterruptedException e){
    e.printStackTrace();                    
}
finally{
Intent openstartingpoint=new Intent("android.intent.action.START");
startActivity(openstartingpoint);
}

我在日食中收到的错误是: - The method sleep() should be accessed in a static way
该应用程序也有效。但是,没有显示当前活动的文本。我只得到一个空白屏幕2秒钟。

==编辑==

但是,一切都适用于此代码。谁能告诉我原因?

Thread timer=new Thread(){
public void run(){
    try{
    sleep(5000);
    }
catch(InterruptedException e){
    e.printStackTrace();                    
    }
    finally{
    Intent openstartingpoint=new Intent("android.intent.action.START");
    startActivity(openstartingpoint);
    }
}
};
    timer.start();

3 个答案:

答案 0 :(得分:4)

这只是一个警告,因为睡眠是一种静态方法,应该称为

Thread.sleep(200);

这意味着它会将当前线程置于休眠状态200毫秒,所以即使你使用一个对象调用它,它仍会将当前线程(不是定时器)置于休眠状态。

案例一:

说你在主线程中,并致电

timer.sleep(200);

它将在睡眠时放置主线程(正如我所说当前线程,计时器未启动,当前线程)。

但是在第二种情况下:您正在创建的新线程(计时器)将处于休眠状态。这就是区别。

you can refer to java docs for better understanding.

答案 1 :(得分:2)

在第一个中,你没有在正确的上下文中调用sleep()方法。就像之前的人说的那样是Thread类中的静态方法,如果你想要停止线程一段时间,它必须在run方法中调用。 在启动线程时也要小心,如果它改变了GUI,因为它会导致异常。

答案 2 :(得分:2)

将方法称为Thread.sleep(2000);

sleep是Thread类的静态方法,因此可以直接使用classname访问它。

在下面提到的第二个代码中,您没有收到错误,因为您正在创建一个匿名类,它以静态方式直接使用Thread类调用sleep方法。

    Thread timer=new Thread()
    {
      public void run(){
         try
            {
              sleep(5000);
            }
    catch(InterruptedException e)
       {
        e.printStackTrace();                    
       }
        finally
        {
        Intent openstartingpoint=new Intent("android.intent.action.START");
        startActivity(openstartingpoint);
        }
      }
    };
        timer.start();