gpt4 book ai didi

Android 长时间套接字监听器

转载 作者:行者123 更新时间:2023-11-29 16:23:11 25 4
gpt4 key购买 nike

从本质上讲,我的公司已经开展了一个项目,用运行 Android 的库存智能手机替换部分寻呼机。只要他们登录,设备就应该在特定套接字上监听以从服务器接收“页面”。我天真的实现是创建一个前台服务,它 1) 启动一个监听线程,2) 持有一个 PARTIAL_WAKE_LOCK。

除非设备长时间处于非 Activity 状态(超过 1 小时),否则它工作正常。然后,操作系统似乎关闭了我的应用进程,可以理解地认为它未在使用中。

我完全理解他们这样做的原因,但我想知道我是否可以以某种方式绕过这个限制。有没有办法向 Android 发出信号,表明我的进程真的足够重要以保持 Activity 状态/设备处于唤醒状态?我为这个项目学习了 Java 和 Android API,所以我的知识在很多领域都是不完整的。

否则,根据我的业务需求描述,您建议如何实现此功能?当用户登录到我们的自定义应用程序时,设备应始终处于监听状态。

感谢大家阅读这个问题。

最佳答案

如果您使用 Service.startForground(),操作系统不会终止您的进程。这就是音乐播放之类的东西,你不希望这些东西在一段时间后被杀死。

就是说,对于这种事情,您通常不需要将服务置于前台——当系统确实终止了您的进程,因为它一直闲置或需要内存时,它仍然知道该服务想要保留运行 so 之后不久将重新启动服务。这就是 Google 自己的服务的工作方式,他们有一个运行后台服务的 .apk,该服务保持网络连接打开到 Google 服务,该服务会在应该完成有趣的事情时报告,例如同步新电子邮件、检索和交付 C2DM Intent 等

此外,您不应该在那段时间一直持有唤醒锁。您会耗尽电池电量,尤其是在某些配备三星蜂鸟处理器的设备上。正确的做法是让 socket 保持打开状态,让设备进入休眠状态。如果数据被传送到套接字,CPU 将唤醒以传送该数据,此时您应该仅在需要读取和处理数据时获取部分唤醒锁。

关于Android 长时间套接字监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6238997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com