Android:前台服务与wakeLock

我对Android相对来说比较陌生,所以我所要求的可能看起来很明显(虽然我已经阅读了所有类似题目的问题,并已经进行了大量的search)。 我需要长时间连续监测加速度计。 已经提出了两种方法:

1)获取在加速度传感器被监视的整个时间保持的部分唤醒锁; 和

2)监视前台服务中的加速度计。

第一种方法似乎使用了大量的电池寿命。 第二种方法应该导致只有很less人遇害的服务,但是我不确定“很less”意味着什么。 应该采用哪种方法,我应该考虑哪些方法?

Related of "Android:前台服务与wakeLock"

拿着一个WakeLock和一个前台Service并不真正相关,不应该比较哪个方向是最好的。

Android OS是基于各种因素构build的,用于交换进程。 这意味着您的进程可能会在任何时候被Android杀死,并且它提供了一个框架来帮助您,开发人员确保您的应用程序可以在发生这种情况时保存和恢复其状态。

WakeLock只是防止CPU进入hibernate状态,这有助于在电话不用时节省电池电量。

现在,两者的结合将帮助你实现你想要的,但是用户成本很高。 我不希望手机中的应用程序持续运行CPU,或者在通知栏中不断显示通知图标(这是前台服务的作用)。

请记住,在前台模式下启动服务并不能保证你的应用程序不会被杀死。 它可能仍然会发生,尽pipe很less。

你想在这里做什么? 为什么要继续监测设备的加速度计? 也许你应该只在你的应用程序的Activity处于前台时才监视它。

我有完全相同的需求和问题。 我相信解决scheme是使用部分唤醒锁和前台服务。 Android会尽量不杀死一个拥有唤醒锁的后台服务,但是当它需要这些资源时可以自由地杀掉它,并可能在稍后重启。 这对很多目的都很好,但至less在我的情况下是不够好的。 将服务置于前台状态是告诉Android,杀死它的方式是不可接受的。 是的,这种情况在极端的情况下可能还会发生,但是现在这违反了API合同,而后台服务Android可以自由地杀死它。 因此,您应该编写这样的程序,但这只是一个可能的但可能很less出现的错误。