Frage zu Threadaufruf

FireDragon

FireDragon

Neues Mitglied
7
Hiho,
ich hab mal eine Frage bezüglich Threads.
Macht es einen Unterschied ob ich einen Methodenaufruf in einen Thread setzte, oder ob ich den Thread innerhalb der Methode erst öffne?

Beispiel:
Code:
        new Thread(new Runnable() {
            public void run() {
              methode_aufrufen();
         }}).start();
vs.

Code:
public void methode(){
        new Thread(new Runnable() {
            public void run() {
              //tue das was in der Methode gemacht werden sollte
         }}).start();
Meiner Meinung nach macht es mehr Sinn, den Methodenaufruf in einen Thread zu packen, leider empfinde ich dies nicht als "gut aussehenden" Programmierstil..

Grüße
FireDragon
 
Zuletzt bearbeitet:
Ich wäre für Methode #1.


  • Dort hat denn der Stackframe, in dem die Methode ausgewetet wird, (hoffentlich ;)) einen selbstredenden Namen "meineklasse.meine_methode". In Fall #2 stünde da meineklasse.anonymeklasse.run().
  • Das gibt im Falle von Exceptions besser lesbare Fehlermeldungen.
  • Die Methode könnte überladen werden, ohne dass man den Threadaufruf duplizieren müsste.
  • The Methode kann aus verschiedenen Kontexten wahlweise normal oder deferred aufgerufen werden.
  • Und dass das "hässlicher" wäre sehe ICH zumindest nicht so. ;)
ADD: Wenn die Funktion an mehreren Stellen als Thread ausgewetet werden soll, würde ich sogar noch weiter gehen und es so machen:
Code:
defer_xyz() {
  new Thread( new Runnable() {
    public void run() {
      xyz();
    }
  }).start();
}

xyz() {
 ....
}
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: FireDragon
Oke danke, das sind einige Vorteile.

Ich habe gelesen, dass man Threads die auf Eigenschaften von Views zugreifen, besonders beachten soll.
Mittels view.post(new Runnable
soll dann in dem Thread auf View-Werten zugegriffen werden.

Leider führt die App dann nicht mehr meine Befehle für eine ListView aus die dort drinnen stehen..
Code:
list.post(new Runnable() {
            public void run() {
               list.setAdapter(listAdapter); 
               list.setOnItemClickListener(new OnItemClickListener() {
                         public void onItemClick(AdapterView<?> parent, View 
                                                        view, int position, long id) {
                         list.setVisibility(4);
                       ...
Grüße
FireDragon
 
Zuletzt bearbeitet:
Ich bin mal so frech, und pushe diesen Thread :)

Hab hin und her gegoogelt aber irgentwie keine vernünftige Erklärung/Tutorial gefunden.

Könnte mir jmd ein kurzes Beispiel/ Erklärung geben wie man Threads nun sinnvoll einsetzten soll?

Sollten kleinere GUI Updates(z.B. einstellen der View Eigenschaften) beim Starten einer Activity in einen Thread? Oder ist es seitens der Perfomance nicht förderlich, wenn man nur KLEINE(2-3 Zeilige) Aktionen durchführt?

Warum wird meine ListView von oben nicht erstellt, wenn ich sie in View.post(..) mit Inhalt fülle?

Welche Art von View Änderungen sollte man mit View.post(..) durchführen

Grüße
FireDragon
 
Zuletzt bearbeitet:
Wofür mehrere Threads: z.B. Daten laden - ohne Extra-Thread kommt ganz schnell der Wait/Force Close-Dialog vom System wenn der Gui-Main-Thread nicht reagiert für ein paar Sekunden.
 
aber nur wenn der User wie ein ungeduldiger Affe auf der UI herumhämmert. :scared:
 
miha schrieb:
Wofür mehrere Threads: z.B. Daten laden - ohne Extra-Thread kommt ganz schnell der Wait/Force Close-Dialog vom System wenn der Gui-Main-Thread nicht reagiert für ein paar Sekunden.

hm das war nicht wirklich eine passende Antwort zu meinen Fragen :huh:
 
FireDragon schrieb:
hm das war nicht wirklich eine passende Antwort zu meinen Fragen :huh:

FireDragon schrieb:
Könnte mir jmd ein kurzes Beispiel/ Erklärung geben wie man Threads nun sinnvoll einsetzten soll?

Darauf war meine Antwort bezogen ... Sowas hier:

Creating Dialogs | Android Developers-> Example ProgressDialog with a second thread

Das beantwortet nicht deine anderen Fragen oben zum Listview (von denen ich keine Ahnung habe) aber dass die Frage ob Thread oder nicht nicht an der Anzahl Code-Zeilen liegt sondern an der benötigten Ausführungszeit sollte auch das zeigen.
 
Zuletzt bearbeitet:

Ähnliche Themen

A
Antworten
1
Aufrufe
571
swa00
swa00
SpeedySix
Antworten
13
Aufrufe
1.388
jogimuc
J
M
Antworten
2
Aufrufe
612
Mozart40
M
Zurück
Oben Unten