我正在进行不活动检测。
我已成功在iOS中通过继承UIApplication
并按照here概述覆盖SendEvent
来成功完成此操作。
我知道我可以分别为iOS和Android实现这一点,但我宁愿通过拦截所有触摸事件和重置我的计时器来实现跨平台的表单方法。我不必在我的所有页面上添加触摸事件处理程序。
答案 0 :(得分:2)
我无法找到跨平台的方法。我能够通过将计时器相关信息保留在核心Forms项目中并分别为iOS和Android实现触摸事件处理程序来实现此目的。我处理了OP中链接中概述的iOS触摸事件,但是对于Android,由于存在Activity
方法,我采用了子类OnUserInteraction()
的方法。
最初,我认为我必须强制Xamarin使用我的子类Activity
来处理我在Xamarin中使用的所有页面,但我错了。 Adam Meaney在Xamarin论坛上能够帮助为Android方面提供关于子类化Android活动的解决方案。事实证明,Xamarin只使用一个继承自Activity
的{{1}}。我在Droid项目中使用了Xamarin提供的Xamarin.Forms.Platform.Android.FormsAppCompatActivity
。从那里,覆盖MainAcitivty
被证明是非常简单的:
OnUserInteraction()
答案 1 :(得分:0)
在我看来,无论何时发生新的触摸事件,您都必须在平台端进行所有操作。除非我遗漏了某些内容,否则您似乎可以在PCL核心Forms项目中执行所有计时器工作,并从检测到触摸时运行的平台特定代码调用该代码。
因此,如果在Android上(我没有验证,但我会这么认为)有一种类似的方法来处理任何触摸,设备范围,那么你似乎只需要实现该事件处理程序,就像你一样适用于iOS,并调用您的Forms核心代码来处理计时器。
澄清一下:在平台方面,只需全局处理触摸事件,然后调用Forms核心中的代码,从而只需执行一次计时器功能。或者看起来除非我遗漏了什么。
如果您想要发布Xamarin表格的功能请求,请在Xamarin的用户语音页面上进行:xamarin.uservoice.com
我怀疑Forms必须如上所述......在每个平台上处理设备范围的触摸,然后在Forms核心代码中使用虚拟方法,只要发生触摸就会调用它。