簡體   English   中英

線程在Java Android中不起作用

[英]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 )進入睡眠狀態。

但是在第二種情況下:您正在創建的新線程(計時器)將進入睡眠狀態。 就是這樣。

您可以參考Java文檔以獲得更好的理解。

在第一個中,您沒有在正確的上下文中調用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM