Execute a method after an activity is visible to user

前端 未结 5 851
无人及你
无人及你 2021-01-31 18:04

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         


        
相关标签:
5条回答
  • 2021-01-31 18:52

    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();
    }
    
    0 讨论(0)
  • 2021-01-31 18:54

    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?

    0 讨论(0)
  • 2021-01-31 18:59

    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.

    0 讨论(0)
  • 2021-01-31 18:59

    Move the code on to onAttachedToWindow()

    @Override
    public void onAttachedToWindow() {
       super.onAttachedToWindow();
       Toast.makeText(this, "Hi UI is fully loaded", Toast.LENGTH_SHORT).show();
    }
    
    0 讨论(0)
  • 2021-01-31 19:06

    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();
    }
    

    0 讨论(0)
提交回复
热议问题