I read an article about Android Context written by Dave Smith and I found that this table (cheat sheet) is very useful, So I decided to copy it here to my blog to save it and make sure that I won't lose it even if the original link expired.
The common actions you can safely take with a given Context object depends on where it came from originally. Below is a table of the common places an application will receive a Context, and in each case what it is useful for:
|Show a Dialog||NO||YES||NO||NO||NO|
|Start an Activity||NO1||YES||NO1||NO1||NO1|
|Start a Service||YES||YES||YES||YES||YES|
|Bind to a Service||YES||YES||YES||YES||NO|
|Send a Broadcast||YES||YES||YES||YES||YES|
|Load Resource Values||YES||YES||YES||YES||YES|
- An application CAN start an Activity from here, but it requires that a new task be created. This may fit specific use cases, but can create non-standard back stack behaviors in your application and is generally not recommended or considered good practice.
- This is legal, but inflation will be done with the default theme for the system on which you are running, not what’s defined in your application.
- Allowed if the receiver is null, which is used for obtaining the current value of a sticky broadcast, on Android 4.2 and above.