Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Thread beenden

Das Thema "Thread beenden" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 17.11.2011, 06:56   #1 (permalink)
Junior Mitglied

Registriert seit: 14.07.2009
Beiträge: 33
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
Standard Thread beenden

Hallo zusammen,

ich habe jetzt mein erstes eigenes BT Chat Programm Fertiggestellt.
Ich weiss für den einen oder anderen sicherlich nicht schwer.

Nun wollte ich unbedingt, das beim Halten eines Buttons ein Befehl in einer Schleife immer wieder bis zum loslassen übertragen wird.

Dafür habe ich auf den Button ein OnTouchListener gelegt und in dem einen Thread ausgeführt. Der Wert BTTH wird durch den MotionEvent UP geändert sodass dann der Thread aufhört zu arbeiten.

Jetzt meine Fragen.
Kann oder sollte ich den Thread anders legen bzw. deklarieren.
Kann ich den Thread beenden oder wird das von alleine erledigt.
Sollte ich gänzlich was an der Programmierung ändern

PHP-Code:
Start.setOnTouchListener(new View.OnTouchListener() {
            @
Override
            
public boolean onTouch(View vMotionEvent event) {
                if ((
event.getAction() == MotionEvent.ACTION_DOWN) ) {
                    
up "Start";
                    
BTTH true;
                    
Log.e(TAGup);
                    
                     new 
Thread(new Runnable() {
                            public 
void run() {
                              
methode_aufrufen();
                         }

                            public 
void methode_aufrufen() {
                                while (
BTTH) {
                                    
                                    try {
                                        
OutputStream lol btSocket.getOutputStream();
                                        
                                        
String message "Start";
                                        
byte[] msgBuffer message.getBytes();
                                        try {
                                                
lol.write(msgBuffer);
                                        } catch (
IOException e) {
                                            
e.printStackTrace();
                                                
Log.e(TAG"ON RESUME: Exception during write.");
                                        }
                                    } catch (
IOException e1) {
                                        
// TODO Auto-generated catch block
                                        
e1.printStackTrace();
                                    }
                                }
                                
                                
                                
                            }}).
start();
                     
                        
                }; 
tau31535 ist offline   Mit Zitat antworten
Alt 17.11.2011, 10:02   #2 (permalink)
Android-Hilfe.de Mitglied

Modell: Motorola Atrix 4G

Registriert seit: 07.12.2010
Beiträge: 170
Abgegebene Danke: 14
Erhielt 32 Danke für 31 Beiträge
Neeldarax eine Nachricht über ICQ schicken
Standard AW: Thread beenden

Hi tau31535,
Zitat:
Zitat von tau31535 Beitrag anzeigen
Jetzt meine Fragen.
Kann oder sollte ich den Thread anders legen bzw. deklarieren.
Kann ich den Thread beenden oder wird das von alleine erledigt.
Sollte ich gänzlich was an der Programmierung ändern
Wo soll man anfangen ^^

Ein TouchEvent wird beim Halten bzw. leichten Bewegen mehrmals ausgelöst.
Starten dein Thread dann auch mehrmals? Ist nicht der Sinn oder?

OnClickEvent wird NUR beim Loslassen ausgelöst, das könnt dir hilfreich für die "stop"-Bedingung sein.

Thread deklaration aus dem onTouch rausziehen.


Kürzen:
Code:
e.printStackTrace();
Log.e(TAG, "ON RESUME: Exception during write.");
zu
Code:
Log.e(TAG, "ON RESUME: Exception during write.", e);

Kurzzeitvariablen in Schleifen meiden.


So das sind stichtpunktartig Ideen, die dir helfen könnten.

regards
__________________
g o o g l e+ plus.neeldarax.de
androidblog www.neeldarax.de
Neeldarax ist offline   Mit Zitat antworten
Alt 17.11.2011, 17:33   #3 (permalink)
Junior Mitglied

Registriert seit: 14.07.2009
Beiträge: 33
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
Standard AW: Thread beenden

Danke schonmal für deine antwort.
Der Thread wird nur einmal gestartet, da ich ich vergleiche auf MotionEvent.ACTION_DOWN bei ziehen werden andere MotionEvent's ausgelöst.
Wenn ich natürlich loslasse und wieder Drücke ist die Bedingung ACTION_DWON wieder erfüllt und der Thread wird gestartet.

Nur die Frage, wird der Thread selber gestoppt, weil die while Bedingung beendet ist oder wie stoppe ich Thread. bzw. wie implementiere ich das.

Habe jetzt folgendes ergänzt

PHP-Code:
Thread Threading Thread.currentThread();
String Name Threading.getName(); 
und nach dem die Schleife fertig ist

PHP-Code:
Threading.stop();
Log.e(TAG"Thread beendet"); 
ist das richtig?

Wenn ich im Log schaue wird THread beenden auch niedergeschrieben. Drück ich den Button erneut wird die Schleife wieder ausgeführt. Jedoch wird im Log dann Thread name immer + 1 hochgezählt

PHP-Code:
new Thread(new Runnable() {
                            public 
void run() {
                                
                                
                              
methode_aufrufen();
                         }

                            public 
void methode_aufrufen() {
                            
Thread    Threading Thread.currentThread();
                                
String Name Threading.getName();
                                while (
BTTH) {
                                    
                                    
//do what you want to do before sleeping
                                      
try {
                                         
Thread.sleep(1000);
                                         
Log.e(TAGName);
                                    } catch (
InterruptedException e) {}
                                    
                                    try {
                                        
OutputStream lol btSocket.getOutputStream();
                                        
                                        
String message "LOL";
                                        
                                        
byte[] msgBuffer message.getBytes();
                                        try {
                                                
lol.write(msgBuffer);
                                        } catch (
IOException e) {
                                            
e.printStackTrace();
                                                
Log.e(TAG"ON RESUME: Exception during write.");
                                        }
                                    } catch (
IOException e1) {
                                        
// TODO Auto-generated catch block
                                        
e1.printStackTrace();
                                    }
                                }
                                
Threading.stop();
                                
Log.e(TAG"Thread beendet");
                                
                                                    
                            }}).
start(); 
tau31535 ist offline   Mit Zitat antworten
Alt 17.11.2011, 19:38   #4 (permalink)
Android Experte
 
Benutzerbild von DieGoldeneMitte

Registriert seit: 05.02.2010
Beiträge: 609
Abgegebene Danke: 75
Erhielt 136 Danke für 119 Beiträge
Standard AW: Thread beenden

Die Methode Tread.stop() ist eine Antiquität und sollte NIEMALS benutzt werden.
Es ist in Java nicht vorgesehen, Threads von außen anzuhalten.

Das mit dem BTTH ist im Prinzip der richtige Weg
__________________
Kein Support via PN/eMail. Bitte das Forum benutzen - dort haben alle etwas davon.
Bei Entwicklerfragen zu abstürzenden Apps bitte immer die Ausgabe von LogCat posten.
Tipp: Zum "Danke" sagen gibt es einen Button.

Geändert von DieGoldeneMitte (17.11.2011 um 19:57 Uhr) Grund: BTTH war ja im Prinzip schon richtig.
DieGoldeneMitte ist offline   Mit Zitat antworten
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Apps beenden Wenger Samsung Galaxy S Plus (I9001) Forum 1 19.09.2011 22:18
[Diskussions-Thread] [FAQ] ICH BIN NEULING -- deswegen lese ich diesen Thread -FuFu- Motorola Milestone Forum 19 01.05.2011 14:51
Programm beenden? TetraVirus LG P990 Optimus Speed Forum 20 14.04.2011 15:00
Autostarts beenden? box90 Android Allgemein 7 22.12.2010 23:03




Du liest gerade: "Thread beenden" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.