BufferedWriter und Reader in seperaten Thread?!

  • Guten Abend,
    ich bin in den letzten Wochen weit voran gekommen in meinem derzeitigen und ersten Android Projekt... nun verzweifle ich aber doch ein einer Fehlermeldung...
    Ich habe einen BufferedWriter und Reader und wenn ich die App ausführe kommt die Meldung das ich das nicht im MainThread machen darf...
    Ich weiß aber nicht wie ich den Writer in einen anderern Thread packen soll/kann...
    Bevor hier nun nur den Writer und Reader reinpacke und dann Stück für Stück den Rest poste, gleich einmal alles:


    Habt ihr eine Idee wie ich das umsetzten kann?
    Lg.
    Greg

  • Hier das Problem:

  • Hi ich würde sagen etwa so

  • mhh ja schon klar... das schreiben klappt jetzt... aber wie kann ich vom Thread aus der/die/das listview updaten?
    ich hab mal eine methode in der mainactivity geschrieben

    Java: Methode
    public static void listupdate(){
            list.invalidateViews();
        }



    die ich im Thread aufrufe

    Java: Aufruf
    Suche.listupdate();


    Da bekomme ich dann

    eine schöne fehlermeldung... habt ihr eine idee wie ich in einer if abfrage im Thread der/die/das listview aus der mainactivity updaten kann?

  • Code
    @Override protected Void doInBackground(Void... params) { Handler handler = new Handler(context.getMainLooper()); handler.post( new Runnable(){ public void run(){ Toast.makeText(context, "Created a server socket",Toast.LENGTH_LONG).show(); } }); }

    sowas? Da muss ich mich reinlesen wo das wir hinkommt... oder ist das mehr?
    (Könntest du mir vielleicht ein passendes Beispiel schicken?)
    Lg. Und gute Nacht


    Greg

  • Tut mir leid falls das jetzt langsam in richtung Spam geht :-O
    aber ich hab jetzt was gebastelt was schon mal halbwegs funktioniert... jetzt bekomme ich aber wieder die Fehlermeldung das ich nicht in der MainActivity mit dem Buffered Writer schreiben darf...

    Ich hoffe auf Lösungsideen und/oder verbesserungsvorschläge... ist das so falsch?
    oder hab ich was vergessen


    Lg.
    Greg

  • ich bitte dich drum :-[
    Das was da raus kam ist das was ich aus deinem Dokument entnommen habe...
    So wie es jetzt ist funktionieren die alertdialogs und ich kann das listview aktualisieren... dafür halt der writer nicht mehr...


    Bitte hilf mir ;(
    Lg.
    Greg

  • Wie ich schon geschrieben habe machst du wieder alles in einen Thread.
    Du brauchst nur den Try und Catch Block in einen Thread zu verschieben da du da auch keine Ausgaben auf den Bildschirm (UI Thread) machst brauchst du auch keinen Handler.
    Ich habe den Block bewusst in eine innere Klasse ausgelagert. Erstens ist Runnable ein Interface und Übersichtlicher ist es auch . Nachteil ist das du nicht auf lokale Variablen die du in deinen Adapter erstellst zugreifen kannst. Dafür habe ich Globale Variablen erstellt (oder du übergibst die Werte mit dem Aufruf der Klasse ) im Adapter weise ich den Globalen deine werte zu damit sie im Thread verfügbar sind. Warum machst du alles Final?
    Teste es mal so aber schreibe nicht wieder alles in einander.
    Da du auch immer Klicklistner usw. hintereinander erstellet anstatt in einer eigenen Methode ist dein Quellcode sehr unübersichtlich.

  • Das ist zwar denk ich mal bisschen schlampig müsste aber funktionieren


    Wenn du eine Methode schreiben willst müssen die Parameter final sein

  • Hallo, erstmal an beide danke für die Antwort.
    @Ahnungslos auch dir Danke, aber ich fand die Lösung von jogimuc übersichtlicher und für mich leichter zu verstehen :D


    @jogimuc danke. Diese verbindung zwischen den ganzen Sachen hat mir irgendwie gefehlt... und irgendwie kam ich nicht auf die idee nur den try and catch block zu verschieben xP


    WAs die übersicht angeht... ja da gebe ich dir absolut recht... das ist noch nicht meine stärke und ich bin froh wenn es einfach mal funktioniert :/


    Aber vielen vielen dank für die Hilfe, nur noch 2-3 Schritte und meine APp kann in betrieb gehen :)
    schönen abend noch:
    Greg

Jetzt mitmachen!

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