2011-09-25 104 views
0

在這個代碼片段中,應用程序會休眠一段時間,但不會將TEXT附加到textStatus(TextView變量),它會顯示錯誤,說明出現錯誤並且應用程序正在關閉。Android線程不工作

 Thread time_manager = new Thread(){ 
     public void run(){ 
      int interval = 2000; 
      try{ 
        sleep(interval); 
        textStatus.append("\nTEXT\n"); 

      } 
      catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      finally{ 
      } 
     } 
    }; 

我做錯了什麼部分?

回答

1

要更新用戶界面,您還可以像這樣使用處理程序,它會在每秒內更新您的用戶界面,每次將計數器的值遞增1。

int response = 0; 
public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     tv = (TextView)findViewById(R.id.myid); 
     thread t = new thread(); 
     t.start(); 
    } 

public class thread extends Thread { 
    public void run() { 
     while (response < 100) { 
      handler.sendEmptyMessage(0); 
      response++; 
      try { 
       sleep(1000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

    private Handler handler = new Handler() { 
     public void handleMessage(Message msg) { 

      tv.setText("helloworld " + response); 
     } 
    }; 
1

UI部分的所有更改都應在UIThread上完成,您應該使用類似postrunOnUithread函數來更新UI。

+0

如果我改變try塊中語句的順序,它顯示的文本一次,然後睡覺,然後給出錯誤 – Vishal

+0

告訴我們你的錯誤。 –