The reason I decided to init `RateMyApp` in a class extending application is to ensure that I was able to address in the proper way a scenario like the following:

 * the user starts the application, the `MainActivity` instance is created and a new `RateMyApp` instance is initialised. So far everything is good. Let's imagine we need to display the dialog. On the screen we now have the main activity and the rating dialog.
 * while the dialog is active, the user rotates his phone. At this point we create a new `MainActivity` instance and we initialise a new `RateMyApp` instance, which wants to show its dialog.

In such a situation, are we going to show both the dialog from the old activity and the dialog from the new one?

My solution to this issue was to have a single `RateMyApp` instance stored in the state of the class extending `Application`. It does not look clean to me, but at least it solves this issue.