2017-07-16 50 views
0

我編程線程時,因爲開始的時候執行10秒過去了就會使UI可見一個組件:無法暫停線程訪問UI Android中

的代碼如下:

Thread buttonThread=null; // this is a global variable 
[...] 

buttonThread = new Thread() 
{ 

        @Override 
        public void run() 
        { 
         try 
         { 
          super.run(); 
          sleep(10000); //Delay of 10 seconds 
         } catch (Exception e) 
         { 

         } 
         finally 
         { 
          try 
          { 
            buttonThread.suspend(); 
            cont.setVisibility(View.VISIBLE); 
            buttonThread.destroy(); 
          } 
          catch (Exception e) 
          { 
            e.printStackTrace(); 
          } 

         } 
        } 
}; 
buttonThread.start(); 

但是,當我嘗試執行buttonThread.suspend()我得到一個java.lang.UnsupportedOperation異常。

我知道使用暫停是不安全的,這就是它被棄用的原因,但我想首先檢查暫停線程是否工作,並通過調用.suspend()看起來是最簡單的方法。

請問您是否可以提供一些可能的解決方案,讓代碼中顯示的線程暫停?

回答

1

有很多方法在android中做這樣的事情。最常見的是,使用像這樣的Handler類。

添加此導入行。

import android.os.Handler; 

並使用此代碼使用處理程序類創建新的runnable。

new Handler().postDelayed(new Runnable() { 
       @Override 
       public void run() { 
       // do your stuff here 
       } 
      }, DELAY_IN_MILLI_SECONDS); 
2

我編程線程時,因爲它開始執行10秒過去了就會使UI可見一個組件:

線程是矯枉過正,這裏它利用其沒有道理的。請使用普通Runnable,並將其張貼延遲時間(postDelayed()),這對您的任務來說已經足夠了。