0
我'與新的線程,所以我讀到的一篇文章/教程... tutorial
我的目標是更新的TextView從線程的GUI ...
public class recorderThread extends Thread {
public boolean recording = true; //variable to start or stop recording
public int frequency; //the public variable that contains the frequency value "heard", it is updated continually while the thread is running.
int numSamples;
AudioRecord recorder;
int numCrossing,p;
short audioData[];
int bufferSize;
private Handler parentHandler;
public recorderThread (Handler parentHandle) {
this.parentHandler = parentHandle;
}
@Override
public void run() {
doingSuff();
Message msgn = new Message() ;
msgn.arg1 = frequency;
/* Sending the message */
parentHandler.sendMessage(msgn);
} //while recording
}//run
}//recorderThread
而且活動
public class sonicDistance extends Activity {
recorderThread rthread ;
static TextView freq;
static TextView duration;
static TextView samplerate;
private static TextView temperature;
static TextView measuredDistance;
private static TextView measuredTimeDiff;
public static TextView measuredFrequenz;
private CustomDialog myfreqDialog;
static double startTime = 0;
static double endTime = 0;
private static float c_propagation = 0;
private static float choosen_temperature = 20;
static double messureFreq = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
freq =((TextView) findViewById(R.id._freqOfTone));
duration =((TextView) findViewById(R.id.duration));
samplerate = ((TextView) findViewById(R.id.Samplerate));
temperature = ((TextView) findViewById(R.id.temperature));
measuredFrequenz = ((TextView) findViewById(R.id._messuredFrequenz));
measuredDistance = ((TextView) findViewById(R.id.distance));
measuredTimeDiff = ((TextView) findViewById(R.id._timediff));
rthread = new recorderThread(myHandler);
rthead.run();
}
public Handler myHandler = new Handler(){
public void handleMessage(Message msg) {
System.out.println(msg.arg1);
setTemperature(Float.valueOf((String)msg.obj));
System.out.println("test" + Float.valueOf((String)msg.obj));
}
};
@Override
protected void onResume(){
super.onResume();
}
}
處理程序的活動中沒有system.out。我認爲這個從未被調用過。
我不知道哪裏是我的錯..
感謝您
嗯,我嘗試Log.d(...),和調試模式,但沒有。看起來handleMessage()永遠不會被調用。 setTemperature()fkt。並不重要(但我也改變了這一部分)。 Damm我不知道錯誤在哪裏.. – marcel 2011-05-04 18:17:21
我發現我的錯誤,我用.run啓動線程而不是.start() – marcel 2011-05-05 13:24:18