Hi,I think that changing your architecture can not resolved your problem, because your problem is "why my code doesn't work", right? :)
If I understand, your viewmodel is in a provider, so the value is saved until you kill the application, but you try to "reset" the viewmodel with the dispose?
Have you try to reset the value of "message" in the dispose (by adding a method "reset" in the viewmodel)?
I think the viewmodel is still in the provider when you close the page, even with the dispose...
Regards,