In my last project in the activities I had a lot of MyActivity.this
provided to the methods requiring context, so I decided to make it like this in the beginning of the class
private Context context = ActivityStage2.this;
and then just pass context
to object methods. So far it works ok, but is it ok at all to declare the Context like that? I mean does that always have the updated state of the MyActivity.this each time the context object is referenced?
You basically "cache" the this
reference to a field. The field initialization will run just before the constructor body, so every time the object is recreated the reference context
will be updated. This works similarly to this
, which points at this instance object.
Now why would you do that? Readability? It seems like you want to use it in inner classes, because you explicitly qualify it with: ActivityStage2.this
. The java way to qualify the outer class reference from an inner class is well understood by programmers, and here the gain is little. One exception could be anonymous inner classes where you don't have the name of the inner class. In this case caching the reference to the Activity
makes sense, but I'd rather use a final local variable instead of a field.
Another reason for doing this could be that you need only the Context
interface instead of the ActivityStage2
interface: that makes sense theoretically but in practice I wouldn't do it without some other better reason.
Last thing: if you turn your field in a static one, you will indeed leak.