Small example:
Sub Class_Globals
Private Root As B4XView
Private xui As XUI
Private Collector As List
Private CollectedLength As Int
Private Output As OutputStream
Private serializator As B4XSerializator
Private bc As ByteConverter
End Sub
Public Sub Initialize
' B4XPages.GetManager.LogEvents = True
End Sub
'This event will be called once, before the page becomes visible.
Private Sub B4XPage_Created (Root1 As B4XView)
Root = Root1
Root.LoadLayout("MainPage")
Collector.Initialize
Output = File.OpenOutput(xui.DefaultFolder, "1.dat", True) 'append = true?
For i = 1 To 10
DataGenerator(20, 50)
Next
End Sub
Private Sub DataGenerator (BytesPerMessage As Int, Hz As Int)
Dim sr As SecureRandom
Dim b(BytesPerMessage) As Byte
Do While True
sr.GetRandomBytes(b)
CollectData(b)
Sleep(800 / Hz)
Loop
End Sub
Private Sub CollectData(b() As Byte)
Collector.Add(b)
CollectedLength = CollectedLength + b.Length
If CollectedLength > 100000 Then
Dim n As Long = DateTime.Now
Dim serialized() As Byte = serializator.ConvertObjectToBytes(Collector)
Dim n1 As Long = DateTime.Now - n
n = DateTime.Now
Output.WriteBytes(IntToBytes(serialized.Length), 0, 4) 'write the message length
Output.WriteBytes(serialized, 0, serialized.Length)
Output.Flush
Dim n2 As Long = DateTime.Now - n
Log($"$Time{DateTime.Now}: wrote data. Serialization: ${n1}ms, Writing: ${n2}ms"$)
CollectedLength = 0
Collector.Clear
End If
End Sub
Private Sub IntToBytes(i As Int) As Byte()
Return bc.IntsToBytes(Array As Int(i))
End Sub
Output:
*** Service (starter) Create ***
** Service (starter) Start **
** Activity (main) Create (first time) **
Call B4XPages.GetManager.LogEvents = True to enable logging B4XPages events.
** Activity (main) Resume **
10:04:15: wrote data. Serialization: 74ms, Writing: 0ms
10:04:24: wrote data. Serialization: 105ms, Writing: 1ms
10:04:32: wrote data. Serialization: 101ms, Writing: 0ms
10:04:41: wrote data. Serialization: 105ms, Writing: 1ms
10:04:49: wrote data. Serialization: 90ms, Writing: 1ms
10:04:58: wrote data. Serialization: 106ms, Writing: 1ms
10:05:06: wrote data. Serialization: 110ms, Writing: 0ms
10:05:15: wrote data. Serialization: 52ms, Writing: 1ms
Using B4XSerializator makes it easy to later read the data.