连续语音识别意外停止
Continuous speech recognition stops unexpectedly
我在我的应用程序中实现了Android Speech Recognition as a service on Android 4.1 & 4.2识别解决方案,稍作修改(例如:1500ms 倒计时,静音蜂鸣声),基本上可以正常工作。
我想运行这项服务几个小时。我对该解决方案进行了很多测试,并且遇到了意外停止。
正在后台识别运行ning,显示通知图标,表示识别服务开启。连续收听 10-15 分钟后,整个应用程序无一例外地停止。 (但它也发生了,在 8 个识别期之后,30 秒后。)当它发生时,我能够追踪到一件事,线程再次进入扩展应用程序 class' onCreate()
方法,打印日志的地方,但没有其他工作。无法删除显示的通知。
我在收听期间没有泄漏相关的异常或任何可疑的日志消息。
有没有人经历过类似的停止?有人知道为什么会这样吗?
我尝试在每 20 次(处理程序)开始后重新启动服务以避免这种行为,因此服务不会 运行ning 那么久。但是情况是一样的。
如果您有任何建议运行服务多小时的可能性如何,请分享。
在阅读下面的修复之前,请注意
长期保持一个服务不让系统杀掉是个坏主意。 phone 电池电量有限,服务 运行 即使在睡眠模式下也是如此。
Android 会根据内存状态杀死不同的服务,所以在内存更大的设备上它可能不会停止。但是不要让它停止,您需要告诉 OS 您的服务很重要,并且引用 android 参考资料,它不能“被杀死而不会造成太大伤害”。要告诉系统您需要您的服务什么时候可以被杀死,什么时候不能,请查看 startForeground
和 stopForeground
方法,如下所述。
启动前台
它使服务 运行 在前台,使系统更愿意杀死除您之外的其他服务以释放内存。 但是,即使您使用此方法,也不能保证您的服务不会停止。如果phone可能会停止内存非常低。还有:
You can set this flag if killing your service would be disruptive to the user, such as if your service is performing background music playback, so the user would notice if their music stopped playing.
停止前台
Remove this service from foreground state, allowing it to be killed if more memory is needed.
我在我的应用程序中实现了Android Speech Recognition as a service on Android 4.1 & 4.2识别解决方案,稍作修改(例如:1500ms 倒计时,静音蜂鸣声),基本上可以正常工作。
我想运行这项服务几个小时。我对该解决方案进行了很多测试,并且遇到了意外停止。
正在后台识别运行ning,显示通知图标,表示识别服务开启。连续收听 10-15 分钟后,整个应用程序无一例外地停止。 (但它也发生了,在 8 个识别期之后,30 秒后。)当它发生时,我能够追踪到一件事,线程再次进入扩展应用程序 class' onCreate()
方法,打印日志的地方,但没有其他工作。无法删除显示的通知。
我在收听期间没有泄漏相关的异常或任何可疑的日志消息。 有没有人经历过类似的停止?有人知道为什么会这样吗?
我尝试在每 20 次(处理程序)开始后重新启动服务以避免这种行为,因此服务不会 运行ning 那么久。但是情况是一样的。
如果您有任何建议运行服务多小时的可能性如何,请分享。
在阅读下面的修复之前,请注意
长期保持一个服务不让系统杀掉是个坏主意。 phone 电池电量有限,服务 运行 即使在睡眠模式下也是如此。
Android 会根据内存状态杀死不同的服务,所以在内存更大的设备上它可能不会停止。但是不要让它停止,您需要告诉 OS 您的服务很重要,并且引用 android 参考资料,它不能“被杀死而不会造成太大伤害”。要告诉系统您需要您的服务什么时候可以被杀死,什么时候不能,请查看 startForeground
和 stopForeground
方法,如下所述。
启动前台
它使服务 运行 在前台,使系统更愿意杀死除您之外的其他服务以释放内存。 但是,即使您使用此方法,也不能保证您的服务不会停止。如果phone可能会停止内存非常低。还有:
You can set this flag if killing your service would be disruptive to the user, such as if your service is performing background music playback, so the user would notice if their music stopped playing.
停止前台
Remove this service from foreground state, allowing it to be killed if more memory is needed.