Bug? StateManager still using DoEvents


Well-Known Member
Licensed User
Longtime User
I noticed the StateManager is still using DoEvents in sub innerRestoreState.
Should this be replaced with "Sleep(0)" or should the line be removed entirely?

Link: https://www.b4x.com/android/forum/t...applications-settings-and-state.9777/#content

Private Sub innerRestoreState(v As View, list1 As List)
    Dim data() As Object
    If v Is EditText Then
        Dim edit As EditText
        edit = v
        data = getNextItem(list1)
        edit.Text = data(0)
        edit.SelectionStart = data(1)
    Else If v Is Spinner Then
        Dim spinner1 As Spinner
        spinner1 = v
        data = getNextItem(list1)
        spinner1.SelectedIndex = data(0)
    Else If v Is CheckBox Then
        Dim check As CheckBox
        check = v
        data = getNextItem(list1)
        check.Checked = data(0)
    Else If v Is RadioButton Then
        Dim radio As RadioButton
        radio = v
        data = getNextItem(list1)
        radio.Checked = data(0)
    Else If v Is ToggleButton Then
        Dim toggle As ToggleButton
        toggle = v
        data = getNextItem(list1)
        toggle.Checked = data(0)
    Else If v Is SeekBar Then
        Dim seek As SeekBar
        seek = v
        data = getNextItem(list1)
        seek.Value = data(0)
    Else If v Is TabHost Then
        Dim th As TabHost
        th = v
        data = getNextItem(list1)
        For i = 0 To th.TabCount - 1
            th.CurrentTab = i
        th.CurrentTab = data(0)
        Dim r As Reflector
        r.Target = th
        Dim tabParentPanel As Panel
        tabParentPanel = r.RunMethod("getTabContentView")
        For i = 0 To tabParentPanel.NumberOfViews - 1
            innerRestoreState(tabParentPanel.GetView(i), list1)
    Else If v Is ScrollView Then
        Dim sv As ScrollView
        sv = v
        data = getNextItem(list1)
        sv.ScrollPosition = data(0)
        DoEvents    '<<<<<<<<< REPLACE ?????
        sv.ScrollPosition = data(0)
        innerRestoreState(sv.Panel, list1)
    Else If v Is Panel Then
        Dim panel1 As Panel
        panel1 = v
        For i = 0 To panel1.NumberOfViews - 1
            innerRestoreState(panel1.GetView(i), list1)
    End If
End Sub