Wie startet man ein Thread richtig?

Status
Nicht offen für weitere Antworten.

Kidao

Mitglied
Hallo! :)

Habe eine einfache Frage auf die ich bis jetzt keine Antwort gefunden habe.
Und zwar würde ich gerne wissen, wie man unter J2ME ein Thread richtig startet.
Habe versucht ein einfaches Uhr-Programm zu schreiben, die Ausgabe kriege ich schon hin, nur leider bleibt die while-Schleife tot aber da die richtige Ausgabe auf dem Bildschirm erscheint, müsste der Thread theoretisch richtig starten.
Vll. liegt mein Fehler aber auch in der falschen Methode zum Text ausgeben... "System.out.println()" gibts ja hier leider nicht mehr(was sehr ärgerlich ist).

Naja, hier ist mein Test-Code:
Code:
public class Zeit extends MIDlet implements Runnable {
    
    private Form form;
    private Thread thread;
    
    public Zeit(){

		new Thread( this ).start();
}
    
    public void run(){
        while(true){
                    form = new Form("Zeit");
            
                    Calendar c = Calendar.getInstance();
                    c.setTime(new Date());
                    int h = c.get(Calendar.HOUR_OF_DAY);
                    int m = c.get(Calendar.MINUTE);
                    int s = c.get(Calendar.SECOND);     
                
                String a = (h<10? "0": "")+h+":"+(m<10? "0": "")+m+":"+(s<10?"0": "")+s;

                form.append(a);
                
                                 try{
					Thread.sleep(50);
                                 }
                                    catch( Exception e ){}
        }

        
    }
    
    /**/
    public void startApp() {
                Display display = Display.getDisplay(this);
		display.setCurrent(form);
    }
    
    public void pauseApp() {
    }
    
    public void destroyApp(boolean unconditional) {
    }
}

Hoffe, mir kann jemand helfen! :)

MfG
Kidao
 

The_S

Top Contributor
Ein Thread in J2ME ist genau das selbe wie ein Thread im JDK! Un System.out.print(ln) gibte es sehr wohl, du siehste es halt nur beim Testen am PC.

Du solltest nicht jedesmal ein neues Objekt von Form erzeugen. Sondern lieber mit deleteAll() leeren! Bzw. noch besser ein Item adden und dessen Text dann jedesmal überschreiben.
 

Kidao

Mitglied
Danke für die Antwort! :)
Naja also ein Thread mag vll. in J2ME und in JDK genau das selbe sein aber mir ging es mehr um das Starten des Threads. In JDK mach ich das ja zB einfach in der Main() und diese gibt es hier nicht oder ist die startApp() mit der Main() gleichzusetzen?

Und wie gesagt, eine einmalige Ausgabe kriege ich zu sehen, doch diese verändert sich nicht und "while(true)" hat anscheinend gar keinen Einfluss, denn mit oder ohne Pause bleibt alles gleich.

Ist "Form" so eine Art "Panel"?


Wäre klasse, wenn jemand meinen Code korrigieren würde, ich sitze schon seit zwei Tagen da und kriege es nicht zum Laufen. :oops:

Mit Canvas, einem Bsp, zwei Klassen habe ich es hinbekommen aber da gibt es ja auch die wunderbare repaint()-Methode und an der einfachsten Textausgabe versage ich. :D


MfG
Kidao
 

The_S

Top Contributor
Kidao hat gesagt.:
Danke für die Antwort! :)

Bitte ...

Kidao hat gesagt.:
Naja also ein Thread mag vll. in J2ME und in JDK genau das selbe sein aber mir ging es mehr um das Starten des Threads. In JDK mach ich das ja zB einfach in der Main() und diese gibt es hier nicht oder ist die startApp() mit der Main() gleichzusetzen?

In J2SE machst du das wann du willst/du den Thread benötigst und in J2ME startet man einen Thread auch dann, wann man ihn benötigt! Es besteht niemals der Zwang einen Thread gleich zu Beginn zu starten! Und wenn du nicht weißt, welche Methode beim Starten aufgerufen wird, solltest du dir dringend nochmal ein Einsteigertutorial und/oder Buch ansehen!

Kidao hat gesagt.:
Ist "Form" so eine Art "Panel"?

Ich kann mich nur wiederholen: Sie dir nochmal die Grundlagen an, sonst wird das hier nichts! Und ja, Form kann man mit JPanel vergleichen.

Kidao hat gesagt.:
Wäre klasse, wenn jemand meinen Code korrigieren würde, ich sitze schon seit zwei Tagen da und kriege es nicht zum Laufen. :oops:

Wäre super, wenn jemand meine Arbeit machen könnte. Ich sitz hier schon seit über 3 Jahren aber irgendwie muss ich immernoch arbeiten ???:L .

Kidao hat gesagt.:
Mit Canvas, einem Bsp, zwei Klassen habe ich es hinbekommen aber da gibt es ja auch die wunderbare repaint()-Methode und an der einfachsten Textausgabe versage ich. :D

Textausgaben kannst du auch über Canvas realisieren!

Kidao hat gesagt.:
Und wie gesagt, eine einmalige Ausgabe kriege ich zu sehen, doch diese verändert sich nicht und "while(true)" hat anscheinend gar keinen Einfluss, denn mit oder ohne Pause bleibt alles gleich.

Du kannst dir auch einfach anschauen, was ich geschrieben habe. Das ist die Lösung. Was willst du mehr?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
ruutaiokwu Android Warum muss man bei Android Studio immer 2x auf "Run" klicken damit die App auf dem Gerät startet Android & Cross-Platform Mobile Apps 8
W Android Browser startet immer, bevor die Daten dafür geholt wurden Android & Cross-Platform Mobile Apps 15
T Android SDK-Manager startet nicht in Eclipse Android & Cross-Platform Mobile Apps 5
J Firebase und Emulator startet nicht Android & Cross-Platform Mobile Apps 2
S Android Emulator startet nicht vollständig. Android & Cross-Platform Mobile Apps 0
M Android App startet nach Tastensperre neu Android & Cross-Platform Mobile Apps 3
D Android App startet nicht Android & Cross-Platform Mobile Apps 24
I Android Auf ImageView aus einem anderen Thread zugreifen liefert Fehlermeldung (App stürzt ab) Android & Cross-Platform Mobile Apps 5
J Android zugrif auf Thread nach Handy drehen. Android & Cross-Platform Mobile Apps 10
A Von verschiedenen Klassen auf Thread zugreifen Android & Cross-Platform Mobile Apps 2
M Android Stop Swipe Refresh aus anderem Thread Android & Cross-Platform Mobile Apps 2
ms_cikar Thread / Intent als externe klasse Android & Cross-Platform Mobile Apps 1
G Thread in einer Service erstellen Android & Cross-Platform Mobile Apps 0
M App Programmierung: Thread starten und Variablenwerte oder Objekte mitgeben Android & Cross-Platform Mobile Apps 2
A Android Von einem Thread auf anderen zugreifen Android & Cross-Platform Mobile Apps 3
C new Thread oder setRunning = true/false Android & Cross-Platform Mobile Apps 12
C Auf innere (Thread)Klasse zugreifen, von anderer Klasse aus Android & Cross-Platform Mobile Apps 3
S Android Kommunikation zwischen UI -> Service -> Thread Android & Cross-Platform Mobile Apps 4
G Pause ohne sleep und ohne zweiten Thread Android & Cross-Platform Mobile Apps 5
G Pause im Programmablauf ohne extra Thread Android & Cross-Platform Mobile Apps 2
JAVAnnik Android Layout ändern in Thread Android & Cross-Platform Mobile Apps 2
Gossi Android Gossis Android Fragen Thread Android & Cross-Platform Mobile Apps 3
H Android ListView Images aus dem Internet via Thread Android & Cross-Platform Mobile Apps 3
L Android Thread Android & Cross-Platform Mobile Apps 4
G Thread und Midlet Android & Cross-Platform Mobile Apps 1
M PythonInterpreter funktioniert nicht richtig NoClassDefFoundError Android & Cross-Platform Mobile Apps 1
W WebView Linkvertise lädt nicht richtig oder bleibt grau Android & Cross-Platform Mobile Apps 10
CT9288 Zufällige Zahlengenerierung scheint nicht richtig zu funktionieren Android & Cross-Platform Mobile Apps 5
J Input Dialog - ist das so richtig ? Android & Cross-Platform Mobile Apps 1
U Android Kalendertermine richtig positionieren in der Tagesansicht Android & Cross-Platform Mobile Apps 0
B Android App aus dem Speicher richtig beenden? Android & Cross-Platform Mobile Apps 6
J Android SimpleDateFormat parser funktioniert nicht richtig? Android & Cross-Platform Mobile Apps 4
T x und y Werte richtig festlegen Android & Cross-Platform Mobile Apps 4
M Umlaute im Quellcode einer Website richtig darstellen Android & Cross-Platform Mobile Apps 4
J Handy bootet nicht mehr richtig Android & Cross-Platform Mobile Apps 2
S Android Wie richtig auf Threadstatus warten? Android & Cross-Platform Mobile Apps 12

Ähnliche Java Themen

Neue Themen


Oben