 <p>Two things makes this Class very useful:</p> <ol> <li>Application class is instantiated before any other Activity.</li> <li>It holds the Application Context</li> </ol> <p>Context brings a host of resources for us: we can figure out some device properties, load some resources, initiate a SQLite database etc, etc. </p> <p>All of this happens before any Activity loads, and all of this is globally available to the Activities.</p> <p>Simple example of what I mean:</p> <pre><code>public class App extends Application{ private static Resources sResources; //--I want to load strings resources from anywhere-- public static String loadStringResource(int resID) { return sResources.getString(resID); } @Override public void onCreate() { super.onCreate(); sResources = getResources(); //---I want to load all preferences when my app starts--- PreferenceManager.setDefaultValues(this,R.xml.prefs,false); } } </code></pre>