SwiftUI List lagged beim Scrollen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • SwiftUI List lagged beim Scrollen

    Hi,

    ich vermute mal stark das meine Liste lagged, weil ich einen Timer laufen habe der jede Sekunde einen Abfrage auf eine Datenbank macht. Meine Frage ist, kann man sowas irgendwie umgehen?

    Code ist quasi:


    Quellcode

    1. let timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect()
    2. @State var something:[String] = []
    3. var body: some View {
    4. HStack {
    5. List {
    6. ForEach(something) { s in
    7. Text("\(s)")
    8. }
    9. }
    10. .onReceive(timer) { t in
    11. getAllNames() //was dann 'something' mit neuen Daten füllt und einen View Refresh auslößt
    12. }
    13. }
    Alles anzeigen

    Eventuell ist es auch die Datenbank abfrage die das ganze zum laggen bringt..... Ich verwende OHMySQL von GitHub

    Danke im voraus.

    Dirk

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Qvex23 ()

  • MCDan schrieb:

    Der Timer läuft im Main Thread. Dadurch wird natürlich das UI beeinträchtigt. Versuche doch mal den Timer in einem Background Thread auszuführen.

    Die eigentlich Frage wäre jedoch, warum die Liste jede Sekunde aktualisiert werden muss?
    War klar das die Frage kommt :D
    Es geht hier um "Einloggen" wenn man den Speisesaal betritt, damit die Küche das essen schnell fertig machen kann. Aber es ist egal auf was ich den Timer stelle (5s, 10s) die UI lagged jedes mal wenn der Timer läuft.
    Timer Background Thread.... danke für den Tipp, ich google mich mal schlau.

    Dirk

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Qvex23 ()

  • MCDan schrieb:

    Der Timer läuft im Main Thread. Dadurch wird natürlich das UI beeinträchtigt. Versuche doch mal den Timer in einem Background Thread auszuführen.

    Die eigentlich Frage wäre jedoch, warum die Liste jede Sekunde aktualisiert werden muss?
    Ohmann.... das es so einfach geht, hätte ich nicht gedacht:

    Quellcode

    1. let dispatchQueue = DispatchQueue(label: "QueueIdentification", qos: .background)
    2. dispatchQueue.async{
    3. //hier der Datenbank Abfrage Kram
    4. }
    und schon läuft alles "smooooth".

    Danke @MCDan