[英]Thread not working in 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);
}
我在eclipse中收到的錯誤是:- The method sleep() should be accessed in a static way
該應用程序也可以使用。 但是,當前活動的文本未顯示。 我只得到了兩秒鍾的空白屏幕。
==編輯==
但是,此代碼一切正常。 誰能告訴我原因?
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();
這只是警告,因為sleep是一個靜態方法,應將其稱為,
Thread.sleep(200);
這意味着它將使當前線程處於睡眠狀態200毫秒,因此,即使您使用對象進行調用,它仍會將當前線程(而非計時器)置於睡眠狀態。
第一種情況:
說你在主線程中,然后打電話
timer.sleep(200);
它將使主線程(如我所說的當前線程 ,計時器未啟動,當前線程為main )進入睡眠狀態。
但是在第二種情況下:您正在創建的新線程(計時器)將進入睡眠狀態。 就是這樣。
在第一個中,您沒有在正確的上下文中調用sleep()方法。 就像我之前的人說的那樣,這是Thread類中的靜態方法,如果要停止線程一段時間,必須在run方法中調用它。 另外,請注意在哪里啟動線程以及線程是否更改了GUI,因為這會導致異常。
將該方法稱為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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.