我是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();
答案 0 :(得分:4)
这只是一个警告,因为睡眠是一种静态方法,应该称为
Thread.sleep(200);
这意味着它会将当前线程置于休眠状态200毫秒,所以即使你使用一个对象调用它,它仍会将当前线程(不是定时器)置于休眠状态。
案例一:
说你在主线程中,并致电
timer.sleep(200);
它将在睡眠时放置主线程(正如我所说当前线程,计时器未启动,当前线程主)。
但是在第二种情况下:您正在创建的新线程(计时器)将处于休眠状态。这就是区别。
答案 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();