Android服务监听触摸事件
Android service listen to touch event
我想在 Android 5.1 应用程序中收集触摸输入(位置和压力)。这可以通过绑定到特定视图的 onTouchListener
来实现。但我想在服务中收集触摸事件(运行 在后台)而不是绑定到特定视图。
是否可以通过某种方式在服务中收集触摸事件?
基本上 - 是的。您可以将任何 View
传递到您的服务中并在那里添加触摸事件侦听器。但是这样你可能会面临严重的内存泄漏问题,因为使用 View
你将通过 Fragment
的 Activity
Context
。也许它可以与一些 ServiceConnection
一起工作并管理 onCreate
/onDestroy
(activity
/fragment
生命周期)。
但是!真正更好的方法是覆盖 Activity
,然后从中继承所有其他活动。在那里你会稍微减少内存泄漏的机会。您可以尝试将 onTouchEvent
侦听器添加到 activity 装饰视图并接收整个屏幕的触摸事件。或者甚至在所有视图前面添加一些不可见的视图并在那里跟踪触摸(我不确定 DecorView
变体是否有效)。然后将触摸传递到任何你想要的地方。
我想在 Android 5.1 应用程序中收集触摸输入(位置和压力)。这可以通过绑定到特定视图的 onTouchListener
来实现。但我想在服务中收集触摸事件(运行 在后台)而不是绑定到特定视图。
是否可以通过某种方式在服务中收集触摸事件?
基本上 - 是的。您可以将任何 View
传递到您的服务中并在那里添加触摸事件侦听器。但是这样你可能会面临严重的内存泄漏问题,因为使用 View
你将通过 Fragment
的 Activity
Context
。也许它可以与一些 ServiceConnection
一起工作并管理 onCreate
/onDestroy
(activity
/fragment
生命周期)。
但是!真正更好的方法是覆盖 Activity
,然后从中继承所有其他活动。在那里你会稍微减少内存泄漏的机会。您可以尝试将 onTouchEvent
侦听器添加到 activity 装饰视图并接收整个屏幕的触摸事件。或者甚至在所有视图前面添加一些不可见的视图并在那里跟踪触摸(我不确定 DecorView
变体是否有效)。然后将触摸传递到任何你想要的地方。