我正在开发能够记录所有触摸事件的android库。
我可以通过以下方式覆盖Window回调来实现:
//set Window.Callback for getting touch event
final Window window = context.getWindow();
final Window.Callback localCallback = window.getCallback();
window.setCallback(new MyWindowCallback(localCallback));
我正在开发库,所以我需要一些方法来获取应用程序的上下文,以便能够通过context.getWindow()获取窗口。我找到了一个建议的解决方案:
private static Application getApplicationContext() throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException {
Context context;
final Class<?> activityThreadClass =
Class.forName("android.app.ActivityThread");
final Method method = activityThreadClass.getMethod("currentApplication");
context = (Application) method.invoke(null, (Object[]) null);
Log.d(tag_, "Context is " + context);
application = (Application)context;
return application;}
但这会返回android.app.Application,不知何故我需要从这个返回的实例中获取Activity,因为我只能在Activity实例上调用getWindow()。
所以问题是,如何从返回的Application实例中获取Activity实例?
由于
答案 0 :(得分:0)
当您获得应用程序上下文时,您可以注册Application.ActivityLifecycleCallbacks以获取活动生命周期事件。
application.registerActivityLifecycleCallbacks(Application.ActivityLifecycleCallbacks callback)
使用Activity实例创建自定义ActivityLifecycleCallbacks(扩展)并获取活动生命周期回调。