调用onServiceConnected()之前经过了很长一段时间



我有一个活动和一个服务在不同的线程中运行。这是一台夜间录音机。

当服务在录制过程中由于任何原因崩溃时(我们无法避免崩溃,因为它来自外部库(,问题就会出现。

作为一种变通方法,我所做的是在"活动"注意到与服务的连接已丢失时重新启动该活动。通过重新创建活动,服务也被重新创建。

问题是,从通话到需要很多时间(甚至1小时(

bindService(RecorderService.newIntent(this), this, BIND_AUTO_CREATE);

以及回调

public void onServiceConnected(ComponentName name, IBinder service) {

我认为发生这种情况是因为手机处于低电量模式,因为用户不会在半夜使用它。

连接完成后,我调用startService,因为需要连接"活动"one_answers"服务"。

所以问题是,记录在那段时间内停止,我需要它在没有中断的情况下运行。一旦活动重新启动,我可以调用startService,但这不能确保在另一次低道德崩溃时连接该服务。

你知道如何更快地连接/启动服务吗?

提前感谢!

如果问题只是夜间的"低功率模式",我认为您可以获得WakeLock(https://developer.android.com/reference/android/os/PowerManager.WakeLock)以在启动服务或活动之前唤醒CPU。完成后,不要忘记释放锁;(

我认为可能存在内存问题和/或限制。只需创建代码,每2小时记录器就会停止、保存并开始录制一个新文件。这个问题应该得到解决。

至少如果您对android.os.PowerManager.WakeLock进行了排序

我在服务中看到过类似的问题,服务停止的原因可能有很多,比如电池、资源等,我会从检查您用于服务的标志开始,例如,它应该首先是start_STICKY,第二件事,我建议考虑android中的AlaramManager,如果你想让一些东西一直在后台运行,它肯定更可靠。

下面的一些有用链接:

服务标志,AlarmManager

最新更新