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

Long amount of time elapses before onServiceConnected() is called

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

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

作为解决方法,我所做的是在 Activity 注意到与服务的连接已丢失时重新启动 activity。 通过重新创建 activity,服务也被重新创建。

问题是,调用

之间需要很长时间(甚至 1 小时)
    bindService(RecorderService.newIntent(this), this, BIND_AUTO_CREATE);

和回调

public void onServiceConnected(ComponentName name, IBinder service) {

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

连接完成后我调用 startService,因为需要连接 Activity 和服务。

所以问题是那个时候记录停止了,我需要它 运行 没有中断。一旦 activity 重述,我就可以调用 startService,但这并不能确保在另一次假设性崩溃时连接该服务。

关于如何使服务 connction/start 更快的任何想法?

提前致谢!

我认为零售的东西可能存在内存问题 and/or 限制。 只需为每 2 小时记录器停止、保存并开始记录新文件创建代码。问题应该解决了。

至少如果你排序了 android.os.PowerManager.WakeLock

如果问题仅出在夜间 "low power mode",我认为您可以获取唤醒锁 (https://developer.android.com/reference/android/os/PowerManager.WakeLock) 以在启动服务之前唤醒 CPU 或 Activity。完成后别忘了释放锁 ;)

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

下面一些有用的链接:

Service Flags, AlarmManager