我對Android應用程序有疑問。我想在稍後創建一個遊戲,並且我正在嘗試需要了解的類和函數。 現在我試圖掌握如何以一種好的方式使用線程,但我的應用程序是「強制關閉」,當我觸摸按鈕。我的Thread()代碼有什麼問題?
對於這個測試應用程序,所有在屏幕上都有一個TextView和一個按鈕。 該按鈕在按下時調用threadStart()。 (onClick in xml) 而我想要它做的是創建一個線程,將變量值增加1,然後向UI線程報告,然後用新值更新文本視圖。
有人可以看到我做錯了這個小代碼片嗎?
package com.weldeborn.tc;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;
public class ThreadCounter extends Activity {
TextView txtCounter1;
int value=0;
final Handler mHandler = new Handler();
final Runnable mUpdateResults = new Runnable() {
public void run() {
updateResult();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txtCounter1 = (TextView) findViewById(R.id.counter1);
}
protected void threadStart() {
Thread t = new Thread() {
public void run() {
doSomething();
mHandler.post(mUpdateResults);
}
};
t.start();
}
private void doSomething() {
value = value+1;
}
private void updateResult() {
txtCounter1.setText(value);
}
}
我的代碼是基於「在UI線程處理昂貴的操作」標題下Android Developer: The Common Tasks and how to do them部分的例子。
我很感激任何幫助。
沒有logcat的錯誤輸出,您將永遠無法調試程序。谷歌它,使用它。另外如果你有XML代碼,你應該使用它。 – Klaus 2011-03-04 13:23:44
但你的onclickListener在哪裏? – 2011-03-04 13:27:56
在buttonView(在main.xml文件中)我使用android:onClick =「threadStart」。我認爲它的作用是實現一個onCliclListener,它已經爲我以前的應用程序工作過。 – Weldeborn 2011-03-04 14:09:16