I have an activity contains too many UI controls. I want to execute a method after make the activity visible.
An example i tried:
publi
Call MyMethod()
in onResume()
of Activity
As per documentation onResume()
is called when the activity will start interacting with the user. At this point your activity is at the top of the activity stack, with user input going to it.
protected void onResume() {
super.onResume();
MyMethod();
}
Move the code on to onResume
.
System calls this method every time your activity comes into the foreground, including when it's created for the first time. Read details for Pausing and Resuming an Activity
@Override
protected void onResume() {
super.onResume();
MyMethod();
}
Read more at Android activity life cycle - what are all these methods for?
Move your code to onResume
@Override
protected void onResume()
{
super.onResume();
MyMethod();
}
Check the activity lifecycle
http://developer.android.com/reference/android/app/Activity.html
protected void onResume ()
Called after onRestoreInstanceState(Bundle), onRestart(), or onPause(), for your activity to start interacting with the user. This is a good place to begin animations, open exclusive-access devices (such as the camera), etc.
Keep in mind that onResume is not the best indicator that your activity is visible to the user; a system window such as the keyguard may be in front. Use onWindowFocusChanged(boolean) to know for certain that your activity is visible to the user (for example, to resume a game).
Derived classes must call through to the super class's implementation of this method. If they do not, an exception will be thrown.
Move the code on to onAttachedToWindow()
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
Toast.makeText(this, "Hi UI is fully loaded", Toast.LENGTH_SHORT).show();
}
there is no real callback, which is called, exactly at that time the Activity is Visible. But as you can see in the attached picture, the method onResume()
is just called when Activity should be visible.
Also have a look at the Activity lifecycle and the documentation HERE
So your method should be called like this:
@Override
public void onResume() {
super.onResume();
MyMethod();
}