In principle the approach to store the current view and to remove it is good - maybe the implementation can be improved...
I assume, that your application manages the current screen - so it would be sufficient to place a variable (type App::MyView) into the application.
Since you place the variable into a device class (which I assume is just an autoobject) - it is necessary to prevent the autoobject from beeing deleted and reinialized. For this purpuse it is necessary to keep a variable within the application that refers to the autoobject. Please have a look to the section lifetime of autobject. Maybe this is the reason, why it is only working sometimes...
Please have a look into the provided example SolarDemo, especially into the class Solar::PanelCarousel. There you will find three variables: CenterPanel, LeftPanel, RightPanel. The variable CenterPanel refers to the currently visible panel, the LeftPanel/RightPanel variables refer to the neighboured panels that will be shown by a slide gesture.
The method ArrangeCarousel is responsible to add and remove the panels and to update the panels within the carousel. Maybe this implementation can serve as some inspiration.
Best regards,
Manfred.