我有點困惑,不知道在哪裏尋找。我想要的是每5秒鐘刷新一次屏幕文本cn & sn。我怎樣才能使用這個線程來處理它?它是我更新文本框的唯一玩法。我使用線程消息/處理程序管理它,但時間太長。那麼有沒有更簡單的方法?從線程錯誤更新視圖
Thread t = new Thread(){
public void run() {
while(true) {
cn.setText(getClName()); //mutated text
sn.setText(getSN()); //mutated text
Thread.sleep(5 * 1000);
}
}
};
t.start();
我得到這樣的錯誤:
03-22 09:04:22.669: E/AndroidRuntime(7877): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
03-22 09:04:22.669: E/AndroidRuntime(7877): at android.view.ViewRoot.checkThread(ViewRoot.java:3020)
03-22 09:04:22.669: E/AndroidRuntime(7877): at android.view.ViewRoot.requestLayout(ViewRoot.java:634)
03-22 09:04:22.669: E/AndroidRuntime(7877): at android.view.View.requestLayout(View.java:8267)
03-22 09:04:22.669: E/AndroidRuntime(7877): at android.view.View.requestLayout(View.java:8267)
03-22 09:04:22.669: E/AndroidRuntime(7877): at android.view.View.requestLayout(View.java:8267)
03-22 09:04:22.669: E/AndroidRuntime(7877): at android.view.View.requestLayout(View.java:8267)
03-22 09:04:22.669: E/AndroidRuntime(7877): at
03-22 09:04:28.849: E/global(7877): Deprecated Thread methods are not supported.
03-22 09:04:28.849: E/global(7877): java.lang.UnsupportedOperationException
03-22 09:04:28.849: E/global(7877): at java.lang.VMThread.stop(VMThread.java:85)
03-22 09:04:28.849: E/global(7877): at java.lang.Thread.stop(Thread.java:1280)
03-22 09:04:28.849: E/global(7877): at java.lang.Thread.stop(Thread.java:1247)
03-22 09:04:28.849: E/global(7877): at android.kvisio.Main.onDestroy(Main.java:298)
Android UI不是線程安全的,所以只有UI Therad可以更新UI。 。 。 。 – aProgrammer 2012-03-22 08:38:58
您無法從Java線程進行UI更改。您可以檢查[點擊這裏] [1] [1]:http://stackoverflow.com/questions/9578548/to-invoke-a-method-of-the-main-thead-from-child -thread/9578652#9578652 – MobiDev 2012-03-22 08:45:08