1. Mitglieder surfen ohne Werbung auf Android-Hilfe.de! ✔ Jetzt kostenlos Mitglied in unserer Community werden.
  1. znieh99, 17.07.2018 #1
    znieh99

    znieh99 Threadstarter Android-Hilfe.de Mitglied

    Hallo Forum,
    ich starte im Main-Thread (mit Class.start()) einen Thread der periodisch Message an den Main-Thread sendet. Das funktioniert klaglos. Aber was passiert mit den Message wenn der Main-Thread inaktiv ist?

    - empfängt er sie trotzdem oder werden sie in einer Queue gespeichert oder gehen sie verloren?
    lg heinz
     
  2. jogimuc, 17.07.2018 #2
    jogimuc

    jogimuc Android-Hilfe.de Mitglied

    Hi welche Art von Nachrichten sind das den?

    Meinst du mit Inaktiv das gerade eine andere Anwendung im Vordergrund ist oder das die Activity beendet ist?
     
  3. znieh99, 18.07.2018 #3
    znieh99

    znieh99 Threadstarter Android-Hilfe.de Mitglied

    Hallo jogimuc,
    es geht um eine Handler-Message und wenn gerade eine andere Anwendung im Vordergrund ist.
     
  4. swa00, 18.07.2018 #4
    swa00

    swa00 Moderator Team-Mitglied

    a) wie schickst du die "Message" ? - Welche Technik ?
    b) Was hindert dich daran, selbst auszuprobieren , ob ein FIFO vorliegt ?

    P.S. Ich denke , dass Du mit Listener/Callbacks besser bedient wärst
     
    Zuletzt bearbeitet: 18.07.2018
  5. znieh99, 18.07.2018 #5
    znieh99

    znieh99 Threadstarter Android-Hilfe.de Mitglied

    Senden:
    Code:
     /**
         * Startpunkt des Thread
         */
        public void run() {
            System.out.println("LooperThread vor Looper: " + new Date());
    
            Looper.prepare();
            mInternHandler = new Handler() {
                public void handleMessage(Message msg) {
                    // mach was
                    System.out.println("LooperThread im Loop: " + new Date());
                    mExternHandler.sendEmptyMessage(msg.what);
                }
            };          //end Handler ------------------------------
            startWork();
    
            Looper.loop();
        }           //end run --------------------------------------
    Empfangen:
    Code:
    mExternHandler = new Handler() {
                @Override
                public void handleMessage(Message msg) {
                    // Hier kommt die Message vom Thread BattChecker
                    count++;
                    System.out.println("ExternHandler in Main : " + count + " " + new Date());
                    ui_Txt_Action.setText("MSG gesendet: " + msg.what + " count: " + count);
    
                    super.handleMessage(msg);
                }
            };          //end ExternHandler ----------------
    Ich habe mit den testweise eingesetzten 'count' festgestellt, dass der Main-Thread auch läuft wenn er nicht im Vordergrund ist (zumindest im Emulator),
    lg heinz
     
  6. swa00, 18.07.2018 #6
    swa00

    swa00 Moderator Team-Mitglied

    Richtig , der hat auch nichts damit zu tun .
    Es wird allerdings kein "dauerhafter" Zustand sein , da Android diesen irgendwann beenden wird.

    Und deine Messages werden ins Nirwana verschwinden.
    FIFO (u.ä.) hast du nur bei Pipes die z.b. TCP/IP basiernd sind.
     
  7. znieh99, 18.07.2018 #7
    znieh99

    znieh99 Threadstarter Android-Hilfe.de Mitglied

    Wenn Android meinen Main-Thread killt, wird doch auch der zugehörige Hintergrund-Thread gekillt?

    Ich möchte gern folgenden Ablauf realisieren:
    - Eine Activity die einen Hintergrund-Thread startet/stoppt und mit Parametern initialisiert.
    - Der Hintergrund-Thread der den Ladezustand der Batterrie periodisch überprüft und bei erreichen der Grenzwerte eine diesbezügliche Meldung ausgibt.
    lg heinz
     
  8. swa00, 18.07.2018 #8
    swa00

    swa00 Moderator Team-Mitglied

    Heinz , du bist m.E. auf dem falschen Weg.

    Baue dir einen Broadcast Receiver , der dir lediglich bei Statusänderung des Akkus einen Callback liefert.
    Warum dazu einen Thread , wenn der eh nix Neues an Info hat ?
     
    Zuletzt bearbeitet: 18.07.2018
  9. znieh99, 18.07.2018 #9
    znieh99

    znieh99 Threadstarter Android-Hilfe.de Mitglied

    Danke Stefan,
    werde ich mir ansehen,
    lg heinz
     
  10. markus.tullius, 22.07.2018 #10
    markus.tullius

    markus.tullius Android-Lexikon


    Nein, ganz so einfach ist es nicht. Nur wenn du, die komplette App beendest, werden alle Threads beendet. Wenn du eine Aktivitiy beendet, können Thread, die du dort gestartet hast, weiter existieren.

    Dh. du musst hinter Dir aufräumen, und alle Threads eigenhändig beenden (interupt). :)

    Und Android killt den MainThread sehr selten. Meistens wird es nur in den Hintergrund geschoben. Das spart Zeit.
     
    Zuletzt bearbeitet: 22.07.2018
    znieh99 bedankt sich.
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Thread von außen stoppen Android App Entwicklung 07.07.2018
custom textView .setText() - UI thread Android App Entwicklung 02.04.2018
Data Message von Firebase an die App senden Android App Entwicklung 18.02.2018
[OFFEN] The application may be doing too much work on its main thread Android App Entwicklung 01.11.2017
Du betrachtest das Thema "Message an inaktiven Main-Thread" im Forum "Android App Entwicklung",
  1. Android-Hilfe.de verwendet Cookies um Inhalte zu personalisieren und dir den bestmöglichen Service zu gewährleisten. Wenn du auf der Seite weitersurfst stimmst du der Cookie-Nutzung zu.  Ich stimme zu.