@zacc @bebef1987  I can always remove the above line , which is creating problem ,, and add 
self.wait_for_condition(lambda m: self.apps.displayed_app.name == messaging_settings.name) 
and that should do the trick , but it would be a hack .
My point of concern is , then how will we come to know that its the message setting screen that is displayed ,
since in self.wait_for_condition(lambda m: self.apps.displayed_app.name == messaging_settings.name) i am waiting for app name to 'Settings'  , so even if the settings screen is displayed and it is not the message settings , an object of MessageSettings would be initialized.