在android应用程序中,在活动中收听加速计与在服务中收听加速计有什么区别

在android应用程序中,在活动中收听加速计与在服务中收听加速计有什么区别,android,android-activity,android-service,Android,Android Activity,Android Service,在android应用程序中,在活动中监听加速计与在服务中监听加速计有什么区别,而不是在前台运行活动,在后台运行服务 问题1:如果侦听器在活动中注册,并且我没有显式地取消注册,而是关闭活动(应用程序),那么它是否会被取消注册 问题2:如果侦听器在服务中注册,即使应用程序关闭,如果我没有显式取消注册,它是否仍会继续侦听加速计,因为一旦我关闭活动,活动的主线程就会死亡,如果不是在新线程中启动,服务将在同一线程中运行?我确实读到后台服务将继续运行并监听传感器,但无法理解它实际上是如何工作的 我想要实现的

在android应用程序中,在活动中监听加速计与在服务中监听加速计有什么区别,而不是在前台运行活动,在后台运行服务

问题1:如果侦听器在活动中注册,并且我没有显式地取消注册,而是关闭活动(应用程序),那么它是否会被取消注册

问题2:如果侦听器在服务中注册,即使应用程序关闭,如果我没有显式取消注册,它是否仍会继续侦听加速计,因为一旦我关闭活动,活动的主线程就会死亡,如果不是在新线程中启动,服务将在同一线程中运行?我确实读到后台服务将继续运行并监听传感器,但无法理解它实际上是如何工作的

我想要实现的是:

单击活动中的按钮,我的服务开始收听加速计。即使应用程序已关闭,它也应继续侦听

单击“活动”中的按钮时,它应停止侦听


我已经实现了按钮点击和监听器打开关闭的功能,但在活动中,我现在想在服务中也这样做,并且不希望监听器在我关闭应用程序时死亡。

如果监听器在活动中注册,而我没有显式取消注册,而是关闭活动(应用程序),它会被取消注册吗.

不,不会的。最有可能的是,您将泄漏您的侦听器,否则这些侦听器将在活动销毁时被垃圾收集。那是个坏习惯。始终明确取消注册在活动中注册的内容。这就是它的工作原理

。如果我没有明确取消注册,即使应用程序关闭,它还会继续监听加速计吗?

只要服务运行,它就会继续侦听加速计事件,除非您显式取消注册侦听器。请小心,这是对设备电池的详尽说明。特别是,如果您的服务是长期运行的,并且您的传感器速率很高

如果未在新线程中启动,则服务将在同一线程中运行。。无法理解它实际上是如何工作的。

默认情况下,服务与启动服务的活动在同一线程上运行,即所谓的UI线程。关闭活动不会消除此线程。该服务将继续接收其订阅的活动

我已经实现了按钮点击和监听器打开关闭的功能,但在活动中,现在想在服务中也这样做,并且不希望监听器在我关闭应用程序时死亡。


只要你还活着,你的听众就会继续活着。只需在服务的
onDestroy()
中显式注销此侦听器。请记住,除非后台服务明确地从前台开始,否则它们很可能会被杀掉。

谢谢Drew,这肯定会有所帮助。