1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Minimieren...welche Methode(n)...?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von BFK, 06.08.2011.

  1. BFK, 06.08.2011 #1
    BFK

    BFK Threadstarter Erfahrener Benutzer

    Beiträge:
    160
    Erhaltene Danke:
    10
    Registriert seit:
    08.12.2010
    Hallo Forum,
    hätte mal ne Frage was das minimieren einer Activity angeht.
    Gibt es eine Methode die nur dann aufgerufen wird, wenn eine Activity minimiert bzw die Home-Taste gedrückt wird..?

    Zum Beispiel gibt es für die Rotation des Handys die Methoden onConfigurationChanged() und onRestoreInstanceState(), die nur dann aufgerufen werden,wenn das Handy rotiert. Deshalb die Frage, ob was ähnliches für das Minimieren gibt.

    Eigentlich will ich nur eine Mehtode, die nachdem Starten einer Activity, die minimiert war, ausgelöst wird...!

    -MFG BFK-
     
  2. epicApps, 06.08.2011 #2
    epicApps

    epicApps Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    05.08.2011
    Also onPause wird aufgerufen, wenn eine Activity in den Background geht und onResume() wenn sie wieder in den Vordergrund kommt. Event. wär dann auch onPostResume() für dich interessant.
     
  3. Neeldarax, 08.08.2011 #3
    Neeldarax

    Neeldarax Erfahrener Benutzer

    Beiträge:
    170
    Erhaltene Danke:
    31
    Registriert seit:
    07.12.2010
    Hi BFK,

    guck dir ma den Lifecircle an, da sieht man eig. alle nötigen Methoden.

    Und so weit mir bekannt ist, gibt es "Minimieren" in dem Sinne nicht bei Android. Es ist halt nur eine App im Vordergrund.

    "Home" ist auch nichts weiteres als eine Activity.

    regards
     
  4. BFK, 09.08.2011 #4
    BFK

    BFK Threadstarter Erfahrener Benutzer

    Beiträge:
    160
    Erhaltene Danke:
    10
    Registriert seit:
    08.12.2010
    Hallo, und Danke erstmals für eure Antworten..!

    Naja onPause(), onResume(), onPostResume bringen mir nichts, werden ja jedes mal aufgerufen, wenn ne Activity starte. Ich suche eigentlich ne Methode die nur aufgerufen wird, wenn die Activity minimiert war und wieder in den Vordergrund kommt.
    Und den Lifecircle kenne ich ja schon, da stehen ja auch nur die wichtigsten Methoden.
    Habe gesehen,dass die Methode onRestart() nur dann aufgerufen wird, wenn der Nutzer die Home-Taste gedrückt hat und danach wieder die Activity startet...alles schön und gut, nur was ist im Falle, dass die Activity mittels ne Methode "Minimize" (also die ich geschrieben habe) minimiert wird und dann wieder aufgerufen wird, dann wird die onRestart() Methode nicht aufgerufen.
    Deshalb bin ich auf der suche nach einer Methode, die sie wahrscheinlich nicht gibt.

    Vielleicht hilft es, wenn ich euch erkläre wozu ich das brauch, dann könnt ihr mir weiterhelfen...: Ich will, dass nach dem minimieren eine Methode aufgerufen wird, sagen wir die heisst nachMiniMethod(). Bevor die Activity minimiert wird schreibe ich im Editor temporär in der onPause()-Methode "minimize = true". Wenn jetzt die Activity wieder im Vordergrund kommt,lese ich in der onCreate()-Methode die Variable "minimize" vom Editor ab und checke ob die true oder false ist. Wenn true dann rufe ich die nachMiniMethode() auf (setze sie später wieder auf false), wenn false, dann nicht. Dieser Weg funkt ganz gut, es gibt nur einen Hacken..: Wenn die Activity minimiert ist (minimize = true) und aus irgendeinem Grund das Handy anstürzt oder der Nutzer das prog killt,dann wird beim nächsten start die nachMiniMethode() aufgerufen weil ja minimize immer noch true ist. Und das sollte ja nicht sein.

    Was könnte ich dagegen machen..?
    Oder lieber, wie geht man vor, wenn man Daten zwischenspeichern will..?
     
  5. DieGoldeneMitte, 09.08.2011 #5
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    onCreate wird gerade eben nicht aufgerufen, wenn die App aus dem Hintergrund nach vorne kommt.
    Dort kannst du also herrenlose "minimize=true" aufräumen.
     
  6. BFK, 09.08.2011 #6
    BFK

    BFK Threadstarter Erfahrener Benutzer

    Beiträge:
    160
    Erhaltene Danke:
    10
    Registriert seit:
    08.12.2010
    Nee, nee bei onResume() checke ich ob minimize true ist, habe mich verwirrt..!
    Aber onCreate wird bei mir aufgerufen, wenn ich die Activity minimiere (nicht von der Home-Taste, sondern durch einem Button wo die App minimiert wird,so dass der Nutzer von der Taskleiste wieder in der App kommt ).
    Da benutze ich aber "Activity.this.fnish();". Ist das ein schlechter Weg..?
    Meine, was kann ich stattdessen tun..?

    Weil wie gesagt, wenn ich das Minimieren nur durch die Home Taste betätige, dann könnte ich ja auch die onRestart-Methode benutzen oder wie du meist bei onCreate minimize auf false setzen..!
     
  7. DieGoldeneMitte, 10.08.2011 #7
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Klingt so, als wären da zwei Activities im Spiel.
    Wenn du die eine nur öffnest (onCreate), um sie gleich wieder zu schließen (finish()),
    klingt das ziemlich nach "von hinten durch die Brust ins Auge".
     
  8. BFK, 10.08.2011 #8
    BFK

    BFK Threadstarter Erfahrener Benutzer

    Beiträge:
    160
    Erhaltene Danke:
    10
    Registriert seit:
    08.12.2010
    Nee, du hast mich da nicht richtig verstanden. Ich öffne nur eine Activity, will aber das der Nutzer durch einen Klick (sagen wir aufnem button) diese Activity minimiert. Da benutze ich "this.finish();". Und hier ist ja das Problem, weil danach die Activity neu created wird, und nicht wie bei dem normalen minimieren (durch die Home-Taste) neu gestarted.
    Meine Frage wäre jetzt, was ich dagegen machen, also wie minimiere ich die Activity, ohne dass die neucreated wird...???

    Hoffe ich bin verständlich geworden..!
     
  9. swordi, 10.08.2011 #9
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    es nützt nichts.

    du hast kein windows hier - du hast android und da gibt es sowas wie minimieren nicht.

    da gibt es nur

    wird angezeigt / wird nicht angezeigt
    ist aktiv / ist nicht aktiv

    minimiert - maximiert - das sind begriffe, die es bei android nicht gibt.
     
  10. DieGoldeneMitte, 10.08.2011 #10
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    finish() beendet die Activity.
    Wenn du sie beendet hast und neu startest, wird sie neu kreiert.
    Ist doch logisch, oder?
     
  11. BFK

    BFK Threadstarter Erfahrener Benutzer

    Beiträge:
    160
    Erhaltene Danke:
    10
    Registriert seit:
    08.12.2010
    @swordi
    Klar ich verstehe schon, nur ich kann mir nicht vorstellen, dass es keine Möglichkeit gibt ne App zu minimieren ohne den Home Button zu benutzen. Ich bin mir zwar nicht sicher, aber ich glaub ich habe schon Apps gesehen, die den Nutzer ne minimier-Funktion anbieten..!


    @DieGoldeneMitte
    Klar ist das logisch. Habe ja auch nicht gesagt, dass ich nicht verstanden hab, dass die Activity neu created wird, habe ja nur gefragt ob es eventuell ne Alternative gibt, wie z.B. Activity in den Hintergrund schicken oder den Home Bereich anzeigen oder Activity verstecken oder was auch immer, das ich benutzen kann, sodas danach die Activity restartet wird und nicht von Anfang an gestarted wird...!
     
  12. DieGoldeneMitte, 12.08.2011 #12
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Wenn du die Activity nicht beenden willst, dann beende sie nicht. :D
    So einfach ist das. :D

    Ja, den Weg gibt es. Drücke auf die "Home-Taste". :D:D:D
    ADD 1: Den User entscheiden lassen, ob der eine App verlassen will, klingt für deinen Anwendungsfall nach der richtigen Lösung.

    ADD 2: Man kann den Launcher auch via Intent starten. Steht sogar explizit in der Doku:
     
    Zuletzt bearbeitet: 12.08.2011
    BFK bedankt sich.
  13. BFK

    BFK Threadstarter Erfahrener Benutzer

    Beiträge:
    160
    Erhaltene Danke:
    10
    Registriert seit:
    08.12.2010
    Danke werde es mal ausprobieren..!

    Meine letzte Idee wäre jetzt noch einen Service zu benutzen, wo ich da Daten auslagern kann. Dann kann ich beim Start der Activity erst checken ob der Service läuft. Aber ok werde noch sehen was die beste Lösung ist für meinen Fall..!
     
  14. DieGoldeneMitte, 12.08.2011 #14
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Fürs Danke gibt es einen Button. :D

    Mit Services kann man sowas auch deichseln. Sie sind aber eher dafür da, wenn etwas verarbeitet werden soll während deine App im Hintergrund ist.
     
  15. BFK

    BFK Threadstarter Erfahrener Benutzer

    Beiträge:
    160
    Erhaltene Danke:
    10
    Registriert seit:
    08.12.2010
    Ja klar ist nicht die beste Lösung weil dies ja noch zusätzlich den Akku leert,wenn auch wenig.!
    Aber ok, das wäre ja nur die aller letzte Lösung..!
     

Diese Seite empfehlen