Threads u. Handler

J

jim

Ambitioniertes Mitglied
0
Hallo liebes Forum,

ich arbeite mich gerade in Threads und auch Handler durch und habe ein einfaches Bsp. . Leider funktioniert das Senden aus dem thread nicht richtig und die handleMessage() wird nicht aufgerufen. Ich habe dies auch schon in einen anderen forum gepostet wo niemand mir helfen konnte. Vielleicht findet hier jemand den Fehler.

mein extends thread class

Code:
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


meine activity class

Code:
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();
}

}

Vielen Dank, ich weis leider nicht weiter...
 
Hi jim,

Threads werden mit start() zum Laufen gebracht.

Wie weit wird dein Code abgearbeitet? Kriegst du einen Fehler/Exception? Steht was im Logcat?

regards
 
  • Danke
Reaktionen: jim
Vielen Dank, du hast hast mein Problem schon gelöst, ich habe den Thread mit run gestartet und dies ist bzw. war mein Fehler. Ich war nicht mir des Unterschiedes zwischen .run() .start() nicht bewusst.
der Rest funktioniert wunderbar
 

Ähnliche Themen

H
  • heikoj10.1
Antworten
4
Aufrufe
714
heikoj10.1
H
W
  • waltsoft
Antworten
3
Aufrufe
722
waltsoft
W
M
  • MikelKatzengreis
Antworten
5
Aufrufe
118
swa00
swa00
Zurück
Oben Unten