Actually, my program was getting something similar. But, about every 10th or 12th second, the number jumped to about 1020 in mine...but not in yours. You've drawn my attention to some other things going on in the program, though.
First, I've been using the B4A Bridge wirelessly, and I noticed that when I made a change to the text coming out in the Log, for example, it reflected that change. But, sometimes, if I did an Undo and saved it and ran the program again, the text in the Log didn't change. So, now I'm suspicious that my program is running a cached version sometimes and not always the latest/greatest.
Second, I've noticed that if I comment out a call from, for example, Sub A to Sub B, which leaves a Sub B uncalled, this increases the time in the Timer difference to about 1030. If I uncomment the call and just comment out the code with the Sub B, the time drops back down to about 1005.
These two observations are leading me to conclude that the contents of the entire program is being reassessed constantly and this reassessment has an impact on the performance. I no longer think that a separate Thread is necessary but, rather, there must be some inefficiency in the code (for example, instead of newly declaring a variable in a loop, declare it once outside of the loop and set it each time within the loop). But, is there a way to enforce that each time the program is run on the phone via the B4A Bridge, the program has been fully replaced by the latest version of the code?