Time Input only resets the values coming from device if I move the app to edit mode and run it again

There should be no need to “restore” the widget info by writing to it. It is designed to take the info once, from the user on the App when they press OK, then it sends that info to the server/device function for your code to process.

Then, assuming your device needed to reboot, whenever your code synchronises that vPin Blynk.syncVirtual(vPin) the associated function again pulls that preset info from the server so your code can again work with it.

Here is a long topic all about that widget.