Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between getApplicationContext and classname.this

When I'm using list view and I have a custom Base Adapter class, I get different text color in list view when base adapter is instantiated by getApplicationContext and classname.this. By getApplicationContext I get white text color but classname.this is black. Can anyone explain it for me?

like image 471
Misagh Aghakhani Avatar asked Apr 22 '13 07:04

Misagh Aghakhani


2 Answers

Basically they are both instances of Context, but the difference is application instance is tied to the lifecycle of the application, while the Activity instance is tied to the lifecycle of an Activity. Thus, they have access to different information about the application environment...

see getApplicationContext

EDIT

In finding your answer it will help you Android Holo Light styling changes depending on chosen context

like image 189
Shiv Avatar answered Sep 30 '22 13:09

Shiv


ActivityName.this refers to activity context. getApplicationContext () refers to the application context.

Most of the times it is better to use activity context.

Check the answer provided by commonsware. Has a detail explanation on the topic.

When to call activity context OR application context?

Quote form the above link

Here are reasons why not to use getApplicationContext() wherever you go:

  1. It's not a complete Context, supporting everything that Activity does. Various things you will try to do with this Context will fail, mostly related to the GUI.

  2. It can create memory leaks, if the Context from getApplicationContext() holds onto something created by your calls on it that you don't clean up. With an Activity, if it holds onto something, once the Activity gets garbage collected, everything else flushes out too. The Application object remains for the lifetime of your process.

like image 28
Raghunandan Avatar answered Sep 30 '22 12:09

Raghunandan