1. *** New version of B4J is available ***
    B4J v7.8
    Dismiss Notice

German Wieso Activity pause, userclosed = false?

Discussion in 'German Forum' started by danebn11, Jun 3, 2019.

  1. danebn11

    danebn11 Member Licensed User

    Hallo,

    mir fällt immer wieder auf, dass mein Handy mit Android 6 immer wieder auf den Homescreen springt, wenn ich meine App geöffnet habe.
    Das geschieht meistens, wenn ich auf irgendeinen Button drücke. Dabei wird bei diesen Buttons nur ein Zähler erhöht und keine Activity gestartet oder geschlossen.
    Im Log finde ich nur "Activity pause, userclosed = false".

    Bei meinem neuen Handy mit Android 9 ist das nicht der Fall.

    Weiß jemand, wie und durch welche Ereignisse ein Activity noch pausiert werden kann?

    Danke für eure Antworten
     
  2. DonManfred

    DonManfred Expert Licensed User

    Wie definierst Du "nur ein Zähler erhöht"? rufst du eine Webapi auf (okhttputils2) oder änderst Du "nur" ein Editfeld/label?
     
  3. so27

    so27 Active Member Licensed User

    Also wenn Du etwas in der App zählst, dann würde ich die Werte speichern, sobald das Activity pausiert wird. Im Bereich Activity_Resume kannst Du den Wert dann wieder an das Element (Label, Textfeld...) übergeben.
     
  4. danebn11

    danebn11 Member Licensed User

    Ich zähle dabei nur einen Integer hoch oder runter welcher über ein Label angezeigt wird.
    Das Problem ist, dass das Activity nicht pausieren soll, aber es macht es trotzdem
     
  5. MarkusR

    MarkusR Well-Known Member Licensed User

    Zeig doch mal ein Code Beispiel was Du da machst.
     
    so27 likes this.
  6. danebn11

    danebn11 Member Licensed User

    Code:
    Sub Button_plus_1_click
        i = 
    1
        counter(i) = counter(i) + 
    1
        
    If counter(i) < 10 Then
            Labels_Anzahl(i).text = 
    "0" & counter(i)
        
    Else
            Labels_Anzahl(i).Text = counter(i)
        
    End If
    End Sub
    Das wäre der Code von einem der Button, ist eigentlich nichts besonderes.

    Kann man irgendwie abfragen, wieso ein Activity pausiert wird bzw. wurde?
     
  7. danebn11

    danebn11 Member Licensed User

    Mir ist es jetzt schon öfters bei verschiedenen Situationen bzw. Buttons aufgefallen.
    Ich weiß nun auch, wie diese Situation entsteht, kann es mir allerdings nicht erklären.

    1. Start der App --> läuft alles normal, wie es soll
    2. App wird per HomeButton verlassen
    3. App wird wieder geöffnet
    4. Beschriebener Fehler tritt auf, auch wenn man die App immer wieder verlässt und wieder öffnet
    5. Beenden des Tasks der App und erneut Starten --> läuft normal
    Das kann man immer wieder wiederholen.
     
  8. MarkusR

    MarkusR Well-Known Member Licensed User

    Zeig doch mal das ganze Activity oder ein Beispiel Projekt als Zip exportieren über Datei Menü.

    Siehe auch NumberFormat NumberFormat2 das spart das If Then statt 5 Zeilen nur eine.

    Startest Du deine App zum testen auch im Debug Modus? Benutzt Du Haltepunkte?
     
    Last edited: Jun 4, 2019
  9. danebn11

    danebn11 Member Licensed User

    Ja, kann ich heute oder morgen machen, wenn ich zu Hause bin.

    Das Problem ist, ich habe es jetzt schon auf mehreren Handys getestet. Die App funktionierte bei jedem. Nur bei dem einen mit Android 6 nicht richtig.
    Deswegen vermute ich, dass das Activity irgendwie anders pausiert wird. (Betriebssystem ?).

    Darum würde es mich interessieren, ob man herausfinden kann wer oder was "Activity pause, userclosed = false" verursacht.
     
  10. MarkusR

    MarkusR Well-Known Member Licensed User

    Das ein Betriebsystem spinnt wegen fehlendem Patch/Update habe ich schon öffters erlebt.
    Kann es zumindest mal testen auf mein Tablet das hat OS 6.1
    Könnte auch an der Android SDK/NDK Version liegen welche Du nutzt um die APK zu erstellen.
     
  11. danebn11

    danebn11 Member Licensed User

    Benutze SDK 28
     
  12. danebn11

    danebn11 Member Licensed User

    Ich habe gerade gemerkt, dass es egal ist, worauf ich klicke bei diesem Fehler. Das Activity wird immer pausiert.
     
  13. MarkusR

    MarkusR Well-Known Member Licensed User

    Haste die App mal deinstalliert und wieder neu drauf gemacht?
    .. dieses Gerät mal neu gestartet?
    .. mal ein neues Projekt ausprobiert was da passiert?
    .. mal minSdkVersion und targetSdkVersion verändert?
    .. da was spezielles im Manifest für Android 6?
    .. Debug Modus und Filter Häkchen entfernt im Protokoll Fenster
     
  14. danebn11

    danebn11 Member Licensed User

    Neu installiert und neu gestartet: natürlich
    Was meinst du genau mit neues Projekt ausprobiert?
    min und targetSDK werde ich morgen probiern --> soll aber nicht Problemlösung sein

    Manifest:
    Code:
    'This code will be applied to the manifest file during compilation.
    'You do not need to modify it in most cases.
    'See this link for for more information: http://www.b4x.com/forum/showthread.php?p=78136
    AddManifestText(
    <uses-sdk android:minSdkVersion=
    "5" android:targetSdkVersion="28"/>
    <supports-screens android:largeScreens=
    "true"
        android:normalScreens=
    "true"
        android:smallScreens=
    "true"
        android:anyDensity=
    "true"/>)
    SetApplicationAttribute(android:icon, 
    "@drawable/icon")
    SetApplicationAttribute(android:
    label"App1")
    'End of default text.
    AddPermission(android.permission.ACCESS_FINE_LOCATION)
    AddPermission(android.permission.ACCESS_NETWORK_STATE)
    AddPermission(android.permission.ACCESS_WIFI_STATE)
    AddPermission(android.permission.CHANGE_WIFI_STATE)
    AddPermission(android.permission.INTERNET)
    AddPermission(android.permission.WAKE_LOCK)
    'AddPermission(android.permission.ACCESS_COARSE_LOCATION)
    Arbeite eigentlich immer im Release Mode

    Was bewirkt das Filter Häckchen?


    Es bringt leider glaube ich nichts, wenn ich meine App zum Testen gebe, da 90% der angezeigten Elemente über FTP in meinem WLan geladen werden und somit für euch nicht testbar ist.
     
  15. danebn11

    danebn11 Member Licensed User

    Konnte die App jetzt auf mehreren Handys testen:
    2x Android 9 : kein Problem
    Android 5.0.1: kein Problem

    noch ein weiteres Handy mit 6.0: anderer Fehler, allerdings ähnlich
    Bei diesem Handy funktioniert der HomeButton nicht immer, wenn die App läuft
     
  16. MarkusR

    MarkusR Well-Known Member Licensed User

    Release Modus ist eigentlich das End Produkt für den Anwender.
    Oder damit man es ohne Verbindung zum Debugger testen kann...
    Bei der Entwicklung & Fehlersuche ist Debugging und das Protokoll sehr wichtig weil es Hinweise gibt, auch im Fehlerfall die Zeile sagt etc.

    Mit neues Projekt meinte ich eine neue App zum Experimente machen.
    Wenn das Protokoll gefiltert ist ist es halt gröber und weniger nützlich.

    Bei einer normalen Fehlersuche im Debug Modus bekommt man die Funktion (Sub) heraus, die Zeile & die Stelle wo es kracht. Haltepunkte sind da auch sehr nützlich.
    Dann prüft man die Werte die an diese Funktion über geben worden sind, ob böse globale Variablen benutzt wurden auch stimmen,
    geht die Bedingungen im Kopf durch und dann sollte es Klick machen.
    Wenn man keinen Fehler erkennen kann könnte es die Runtime Umgebung sein oder eine Bibliothek die nicht so recht paßt.
    Sehr nützlich sind auf jedenfall Debug Ausgaben mit Log(...) weil man dann sehr genau den Programm Ablauf sehen kann.

    pausiert würde ich nicht so wörtlich nehmen.
    Diese Activitys haben halt eine gewisse Ereignisreihenfolge.
     
    Last edited: Jun 4, 2019
  17. danebn11

    danebn11 Member Licensed User

    Das wären die letzten Zeilen im log...ich kenne mich leider damit nicht wirklich aus.
    Erkennt man darin, wer oder was das Activity pausiert?

    Code:
    acquireWakeLockInternal: lock=81535270, flags=0x1, tag="*launch*", ws=WorkSource{10015}, uid=1000, pid=809
    updateWakeLockSummaryLocked: mWakefulness=Awake, mWakeLockSummary=0x1
    updateUserActivitySummaryLocked: mWakefulness=Awake, mUserActivitySummary=0x1, nextTimeout=2200315 (in 23926 ms)
    requestPowerState: policy=BRIGHT, useProximitySensor=false, screenBrightness=178, screenAutoBrightnessAdjustment=0.0, brightnessSetByUser=true, useAutoBrightness=false, blockScreenOn=false, lowPowerMode=false, boostScreenBrightness=false, dozeScreenBrightness=-1, dozeScreenState=UNKNOWN, waitForNegativeProximity=false
    setBrightness mButtonLight 0.
    updateDisplayPowerStateLocked: mDisplayReady=true, policy=3, mWakefulness=1, mWakeLockSummary=0x1, mUserActivitySummary=0x1, mBootCompleted=true, mScreenBrightnessBoostInProgress=false
    ** Activity (Seite1) Pause, UserClosed = false **
     
  18. danebn11

    danebn11 Member Licensed User

    In der Main Activity passiert auch das selbe:

    Code:
    updateDisplayPowerStateLocked: mDisplayReady=true, policy=3, mWakefulness=1, mWakeLockSummary=0x1, mUserActivitySummary=0x1, mBootCompleted=true, mScreenBrightnessBoostInProgress=false
    onWakeLockAcquired: flags=
    1, tag="*launch*", packageName=android, ownerUid=1000, ownerPid=809, workSource=WorkSource{10015}
    Start Kommunikation 4
    ** Activity (main) Pause, UserClosed = false **
    ACT-AM_ON_PAUSE_CALLED ActivityRecord{875ab64 token=android.os.BinderProxy@7aaa1cd {com.Daniel.App1/com.Daniel.App1.main}}
    InputReader:: getSwitchState lock
    Hier sieht es allerdings so aus, wie wenn in der nächsten Zeile das pausieren irgendwie erkannt wurde.
    "Start Kommunikation 4" ist ein log von mir: dabei wird ein Service gestartet
     
  19. MarkusR

    MarkusR Well-Known Member Licensed User

    Das Log von Start bis Ende ohne Filter hätte auch nicht geschadet.
    Sehe da nur was von PowerManager & WakeLock.

    Versuche es mal mit Haltepunkte und laß deine App dann immer ein weiter zum nächsten laufen.
    Was auch helfen könnte ist Dinge auskommentieren als Block oder mit If 1=0 Then
     
  20. pucki

    pucki Active Member Licensed User

    Ich habe mir dein Code mal angesehen.

    Ich wusste gar nicht das man OBJEKTE in ein Array zusammenfassen kann. Ist das möglich. ?? Wenn nicht liegt vielleicht daran das Problem.

    Falls man doch Objekte (hier Labels_Anzahl ) in ein Array zusammenfassen kann, möchte ich doch gerne mal wissen wie das geht.

    Gruß

    Pucki
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice