Eine Klasse als Thread ablaufen lassen

  • Hallo Leute,


    Ich habe ein Problem. Ich möchte gerne einen FTP Connect durchführen. Wegen der NetworkOnMainThreadException, habe ich bereits eine Extra Klasse für den Network Krams erstellt. Aber scheinbar geht es immer noch nicht. Wie kann ich es also so umändern, dass ich die Klasse als Thread ablaufen lasse. Die Klasse beinhaltet nur eine main Funktion die Leer ist und eine Funktion mit zwei Übergabeparametern.


    LG
    Niklas

  • Danke dir für die Antwort, ich habe es aber etwas anders gelöst. Ich habe wirklich einen Thread erstellt. Hier mal mein Thread:



    package com.iserv.iserv_app;


    import org.apache.commons.net.ftp.FTPClient;
    import android.content.SharedPreferences.Editor;


    public class ftp_login extends Thread{

    Editor edit;
    String user;
    String pass;

    public ftp_login(String user, String pass){

    this.user = user;
    this.pass = pass;

    }

    public void run(){
    String server = "caro-os.de";
    FTPClient ftp = new FTPClient();
    try{
    System.out.println("Verbindungsversuch mit " + user + " und " + pass);
    ftp.connect(server);
    if(ftp.login(user, pass)){
    System.out.println("Erfolgreich");
    Login_main.ergebnis.set(true);
    }else{
    System.out.println("Fehlgeschlagen");
    }
    }catch(Exception ex)
    {
    ex.printStackTrace();
    }
    }


    }

  • naja ich bin nur bei ftp hellhörig geworden


    wenn du aus einem thread heraus auf UI Elemente zugreifen möchtest (fortschrittsbalken) musst du dir einen Handler definieren und dort Nachrichten hin un her schicken...


    Einfacher geht es mit einem Asynctask - der hat bereits Methoden implementiert (onProgress) wo du Zugriff auf UI Elemente (main thread) hast.
    daher finde ich AsyncTask wesentlich übersichtlicher.

  • Zitat

    Hi,


    wenn du möchtest das das "drehende Rädchen" vom Thread gesteuert wird musst du wie killphil75 schon sagte mit einem Handler arbeiten.


    mfg Titus


    Jein, wenn du den ProgressDialog als drehendes Rad verwendest must du ja nur .dismis(); aufrufen, welches laut Doku auch aus einem Nicht-UI Thread aufgerufen werden darf.


    Gruss
    antifish

  • asynctask ist extra für solche geschichten gemacht, ich empfehle dir diesen zu verwenden anstatt eigene threads zu schreiben


    da gibt es extra methoden vor und nach dem run des threads die dann aufgerufen werden können
    so könntest du z.b. in der methode nach dem run dann den progressdialog dismissen

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!