有没有更好的方法来为所有活动实现 GestureDetetor 而不必单独定义 GestureDetector?
在我的场景中,我有 10 个活动,我希望它们都对手势具有相同的行为。例如,向右滑动将结束当前活动并将用户带回主要活动。
我的选择似乎是
- 在我的 10 个活动中定义 GestureDetector
或 - 扩展 Activity 并在那里添加一个 GestureDetector ,然后从我的自定义活动中扩展。
有没有更好的方法来实现这种行为?
有没有更好的方法来为所有活动实现 GestureDetetor 而不必单独定义 GestureDetector?
在我的场景中,我有 10 个活动,我希望它们都对手势具有相同的行为。例如,向右滑动将结束当前活动并将用户带回主要活动。
我的选择似乎是
有没有更好的方法来实现这种行为?
一种简单的方法是将 GestureDetector 设置在所有活动都从其扩展的基类中。这是一种典型的方法,但每次都会创建一个新实例。
另一种方法是使用Application.registerActivityLifecycleCallbacks
. 您可以在Application 类文档中找到更多信息。这是 api 14+。
不要忘记阅读文档:
public void registerActivityLifecycleCallbacks (Application.ActivityLifecycleCallbacks 回调)
在 Context 的基础应用中添加一个新的 ComponentCallbacks,它会在调用活动和其他组件的 ComponentCallbacks 方法的同时被调用。请注意,您必须确保在将来适当的时候使用 unregisterComponentCallbacks(ComponentCallbacks);这不会为您删除。
完成此操作后,只需检查ActivityLifecycleCallbacks以获取更多信息。您已经获得了所有典型的 onCreate、start、resume 等回调,并将相应的活动作为参数。