When exactly is onUserInteraction() called?

后端 未结 2 1870
余生分开走
余生分开走 2021-01-18 11:17

in my app I got a thrad that checks every 60s data from a webservice (defined in onCreate()):

new Thread(new Runnable() {
    @Override
    public void run()         


        
相关标签:
2条回答
  • 2021-01-18 11:50

    may be you want read the source below:

    Instrumentation.java

    public void callActivityOnUserLeaving(Activity activity) {
       activity.performUserLeaving();}
    

    Activity.java

    final void performUserLeaving() {
        onUserInteraction();
        onUserLeaveHint();}
    
    public boolean dispatchKeyEvent(KeyEvent event) {
        onUserInteraction();
        ...
    }
    public boolean dispatchKeyShortcutEvent(KeyEvent event) {
        onUserInteraction();
        .....
    }
    public boolean dispatchTouchEvent(MotionEvent ev) {
        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
            onUserInteraction();
        }
      ....
    }
    public boolean dispatchTrackballEvent(MotionEvent ev) {
        onUserInteraction();
       ....
    }
    public boolean dispatchGenericMotionEvent(MotionEvent ev) {
        onUserInteraction();
       ....
    }
    

    onUserInteraction() be called as below:

    1. as the doc ,onUserInteraction Called whenever a key, touch, or trackball event is dispatched to the activity. "interacted"is significant. So all "XXEvent" will call this method.
    2. doc : "All calls to your activity's onUserLeaveHint() callback will be accompanied by calls to onUserInteraction()." onUserLeaveHint() : Called as part of the activity lifecycle when an activity is about to go into the background as the result of user choice. that is, when u is going to leave activity, it be called. such as , start another activity in your act.
    0 讨论(0)
  • 2021-01-18 11:51

    The Android documentation makes this very clear. It states :

    public void onUserInteraction ()
    

    Called whenever a key, touch, or trackball event is dispatched to the activity. Implement this method if you wish to know that the user has interacted with the device in some way while your activity is running. This callback and onUserLeaveHint() are intended to help activities manage status bar notifications intelligently; specifically, for helping activities determine the proper time to cancel a notfication.

    All calls to your activity's onUserLeaveHint() callback will be accompanied by calls to onUserInteraction(). This ensures that your activity will be told of relevant user activity such as pulling down the notification pane and touching an item there.

    Note that this callback will be invoked for the touch down action that begins a touch gesture, but may not be invoked for the touch-moved and touch-up actions that follow.

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