Using Application context everywhere?

android, android-context

Solution

There are a couple of potential problems with this approach, though in a lot of circumstances (such as your example) it will work well.

In particular you should be careful when dealing with anything that deals with the `GUI` that requires a `Context`. For example, if you pass the application Context into the `LayoutInflater` you will get an Exception. Generally speaking, your approach is excellent: it's good practice to use an `Activity's` `Context` within that `Activity`, and the `Application Context` when passing a context beyond the scope of an `Activity` to avoid memory leaks.

Also, as an alternative to your pattern you can use the shortcut of calling `getApplicationContext()` on a `Context` object (such as an Activity) to get the Application Context.

Problem

In an Android app, is there anything wrong with the following approach: ``` public class MyApp extends android.app.Application { private static MyApp instance; public MyApp() { instance = this; } public static Context getContext() { return instance; } } ``` and pass it everywhere (e.g. SQLiteOpenHelper) where context is required (and not leaking of course)?

Original source