I've been developing android apps for about 9 months now and I'll have to agree with masterPie that the entire process seems archaic. Though slightly better then development on Blackberry, and Java ME.
In order to figure out exceptions one has to look over the log file which has the stack trace from the exception. And I'll admit that works really well if it crashes on one of your users and they submit the report. In development it's the equivalent of using System.out/ Debug.Print, but worse since in order to get the stack trace, you have to click continue on the debugger until the app crashes and not just hit stop.
The worst however dealing with passing complex data around. Google's recontamination is to use singletons,
Base class for those who need to maintain global application state. You can provide your own implementation by specifying its name in your AndroidManifest.xml's <application> tag, which will cause that class to be instantiated for you when the process for your application/package is created.
There is normally no need to subclass Application. In most situation, static singletons can provide the same functionality in a more modular way. If your singleton needs a global context (for example to register broadcast receivers), the function to retrieve it can be given a Context which internally uses Context.getApplicationContext() when first constructing the singleton.