German Oberfläche arbeitet sehr langsam

Discussion in 'German Forum' started by Sinan Tuzcu, Feb 14, 2019.

  1. Sinan Tuzcu

    Sinan Tuzcu Active Member Licensed User

    Hallo,

    ich bekomme vom Ethernet Gerät ununterbrochen die Daten gesendet
    Code:
    Sub AStreams_NewData (Buffer() As Byte)
    Dim msg As String
        msg = 
    BytesToString(Buffer, 0, Buffer.Length, "Windows-1252")
          
        
    Dim msg_trennen() As String = Regex.Split("\|",msg)
    Parse1 = msg_trennen(
    1).Trim
    Parse2 = msg_trennen(
    2).Trim
    Parse3 = msg_trennen(
    3).Trim
    Parse4 = msg_trennen(
    4).Trim
    Sleep(
    0)
    CallSub(Input_Output, "DatenLesen")
    End Sub
    und übergebe auch einiges an die Oberfläche bzw. auf eine Avtivity.
    Nun, dadurch das die Daten sehr schnell sind, und die Oberfläche ständig aktualisiert werden muss, arbeitet der Scrollview sehr langsam als wie zuvor.

    Wer kennt da eine Abhilfe?
     
  2. DonManfred

    DonManfred Expert Licensed User

    Du solltest Dir WIRKLICH angewöhnen Testprojekte hochzuladen die dein Problem zeigen.
    Wenn die daten so schnell kommen dann solltest Du sie evtl. sammeln und in einem Timer die Daten dann verarbeiten (first in, first out prinzip) und die aktivity dann z.b. nur alle 250ms (4x in der Sekunde) aktualisieren.

    Android ist kein reatime OS. Android ist Eventbasiert. Es wird dir nicht möglich sein, eine Activity 100 mal (oder gar mehr) in der Sekunde zu aktualisieren.
    Hört sich für mich nach einem Problem in deiner Struktur (Programmflow) an.

    Wie oft aktualisierst Du die Activity in der Sekunde??
     
  3. Alexander Stolte

    Alexander Stolte Well-Known Member Licensed User

    Eventuell würde ein Wait For helfen, immer hin ist dies eine Asynchrone Methode, einfach mal das Video von Erel anschauen dazu.
     
  4. pucki

    pucki Active Member Licensed User

    Ist ein allgemeines Problem bei Sprachen wie Basic. Ist in VB nicht viel anders.
    Ich mache es da so :


    Code:
    dim Wert (100)
    dim i as Integer
    dim lauf as boolean

    i = 
    0
    lauf = 
    true
      
    do while Lauf = true
        
    do while i < 100 ' eine Art Timer die angibt wie oft die aktualisiere werden soll.
          i= i +1
          wert(i) = daten 
    ' hier die Daten sammeln
      loop
      
    ' aktualisiere Anzeige
     ' in VB mit My.Application.DoEvents  ob es ein ähnliche Befehl in B4a gibt weiß ich nicht. In VB zwingt dieser Befehl das Programm die Anzeigen zu aktualisieren.
      i = 0
    loop
    Ich hoffe dir eine Lösung gezeigt zu haben. Mein Code ist nicht verfeinert, aber in VB schreibe ich diese Variante jedes mal wenn der Benutzer wissen muss, ob sein Programm noch lebt. Gewisse Datenbank-Operationen etc. dauern halt was länger. ;)

    Gruß

    Pucki
     
  5. Sinan Tuzcu

    Sinan Tuzcu Active Member Licensed User

    und wie mache ich hinter der Methode den Resumable Sub?

    Bei Erels viedeo konnte ich das nicht sehen... es war von Anfang an da.
     
  6. Sinan Tuzcu

    Sinan Tuzcu Active Member Licensed User

    genau das brauche ich da.
     
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