Handler andere Methoden hinzufügen

  • Antworten:6
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

23.03.2013, 16:45:00 via Website

Hallo,
ich habe folgendes Problem.
Ich habe mehrere Methoden indenen einzelne Threads ausgeführt werden.
Bei jedem aufruf wird ein neuer Thread aufgerufen, dinem dann der Code ausgeführt wird.
Insgesamt gibt es eine TCP Connection.

Nun will ich nicht für jeden Thread einen Handler machen.
Und ich will in einen Handler noch andere Funktionen einbauen, sodass ich aus einem Thread heraus einen´Handler habe und mit dem dann einen Toast erstellen oder Steuerelemente ändern kann.
Ich hatte mir das irgendwie so gedacht:

1private Handler handler = new Handler() {
2 @Override
3
4 public void handleMessage(Message msg) {
5
6
7 }
8
9 public void makeToast(String msg) //Neue Funkton sollte mit handler.makeToast("Hallo"); aufgerufen werden. Es funktioniert aber nicht.
10 {
11 Toast.makeText(mContext, msg, Toast.LENGTH_LONG).show();
12
13 }
14
15
16 };
17
18
19
20 public void getMessage() // Warte auf Antwort vom Server !!!Hinweis: Diese Funktion Funktioniert nur, wenn schon eine anfrage an den Server gesendet wurde und sie noch nicht empfangen wurde!
21 {
22
23 Runnable r = new Runnable()
24 {
25
26 public void run() {
27
28
29
30
31 try {
32handler.makeToast(empfangenerText):
33
34 tcp.SetText(finalText); // Hier soll aus einem Thread ein TextView geändert werden, das soll auch der hanler machen
35handler.setText(TextView tv,String Text)
36 }
37 catch (IOException e) {
38 // TODO Auto-generated catch block
39 e.printStackTrace();
40 } } };
41
42
43
44 Thread th = new Thread(r);
45 th.start();
46
47
48 }

Geht das mit dem Hinzufügen von Methoden in einen Handler?

Vielen Dank im Voraus

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

24.03.2013, 11:10:41 via Website

Kann mir niemand helfen?
Natürlich kann ich auch für jede Funktion einen eigenen Handler erstellen, aber das ist ziemlich unständlich.
Kann ich eigentlich bestimmte Variablen mit in den Handler übergenen, wie einen String oder eine Boolean?


Bitte um Antwort

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Appsoluts
  • Forum-Beiträge: 304

25.03.2013, 23:43:36 via Website

Ich versteh gerade nicht, wofür du da einen Handler brauchst.
Dein Handler recived ja garnix bzw macht nix mit der message.

Ja du kannst Objecte an den Handler schicken.

Antworten
Michele
  • Forum-Beiträge: 1.525

26.03.2013, 03:51:18 via Website

Ich verstehe auch nur Bahnhof was du meinst mit dem Handler.
Oder genau machen willst damit?



LG

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

26.03.2013, 08:21:32 via Website

Sorry wenn ich das unverständlich gesrieben habe.
Ich will einfach während der Laufzeit eines Threads daten an einen Handler schicken und diese dann dort auswerten,denn ich meinte der Handler läuft im UI Thread und und ich kann direckt Steruerelemente aus dem Handler ändern.
Wenn ihr das immer noch nischt versteht, ist das nicht schlimm, ich versuche, das ganze mit den Threads in einem -asyncTask zu machen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Appsoluts
  • Forum-Beiträge: 304

26.03.2013, 12:15:23 via Website

Für lange Operationen, wie sich deine anhört, empfehle ich Services zu nutzen.
Du kannst einfach mit message.obtain() an den Handler Objekte schicken,

Versuch mal deinen Toast in die handleMessage Methode zu packen...

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

26.03.2013, 14:50:39 via App

Ok, aber der ich finde es mit AsyncTask besser,als mit einem Handler

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten