android收藏

Activity 之 onUserInteraction 及

2018-04-19  本文已影响728人  在简书已被

在看Activity Touch事件分发过程中,发现了onUserInteraction 及 onUserLeaveHint 两个方法,如下:

/**
 * 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 {@link #onUserLeaveHint} are intended to help
 * activities manage status bar notifications intelligently; specifically,
 * for helping activities determine the proper time to cancel a notfication.
 *
 * <p>All calls to your activity's {@link #onUserLeaveHint} callback will
 * be accompanied by calls to {@link #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.
 *
 * <p>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.
 *
 * @see #onUserLeaveHint()
 */
public void onUserInteraction() {
}



/**
 * Called as part of the activity lifecycle when an activity is about to go
 * into the background as the result of user choice.  For example, when the
 * user presses the Home key, {@link #onUserLeaveHint} will be called, but
 * when an incoming phone call causes the in-call Activity to be automatically
 * brought to the foreground, {@link #onUserLeaveHint} will not be called on
 * the activity being interrupted.  In cases when it is invoked, this method
 * is called right before the activity's {@link #onPause} callback.
 *
 * <p>This callback and {@link #onUserInteraction} are intended to help
 * activities manage status bar notifications intelligently; specifically,
 * for helping activities determine the proper time to cancel a notfication.
 *
 * @see #onUserInteraction()
 */
protected void onUserLeaveHint() {
}

简单翻译一下。
onUserInteraction:每当Key,Touch,Trackball事件分发到当前Activity就会被调用。如果你想当你的Activity在运行的时候,能够得知用户正在与你的设备交互,你可以override该方法。

这个回调方法和onUserLeaveHint是为了帮助Activities智能的管理状态栏Notification;特别是为了帮助Activities在恰当的时间取消Notification。

所有Activity的onUserLeaveHint 回调都会伴随着onUserInteraction。这保证当用户相关的的操作都会被通知到,例如下拉下通知栏并点击其中的条目。

注意在Touch事件分发过程中,只有Touch Down 即Touch事件的开始会触发该回调,不会在move 和 up 分发时触发(从Activity 源码中 dispatchTouchEvent 方法中确实是这么做的)。

onUserLeaveHint:作为Activity的生命周期回调的部分,会在用户决定将Acitivity放到后台时被调用。例如:当用户按下Home键,onUserLeaveHint就会被调用。但是当来电话时,来电界面会自动弹出,onUserLeaveHint就不会被调用。当该方法被调用时,他会恰好在onPause调用之前。

上一篇 下一篇

猜你喜欢

热点阅读