所以,我有一个与服务器频繁通信的应用程序。我在单例类中完成了 Socket 创建,以确保创建它的工作只完成一次。然而,这是一个Android应用程序,我永远不能保证应用程序销毁时清理的代码会被执行。因此,我目前每次使用时都会打开和关闭套接字。
我不知道这对CPU的消耗有多大,有人能解释一下吗?
最佳答案
@providence,如果它是一个每次使用时打开/关闭套接字的单个应用程序,从 CPU 工作负载的角度来看,这不是我太担心的事情。如果您可以选择保持套接字打开,那么它们实际上可能是更好的选择。移动数据连接选项 s.a. GPRS、EDGE、3G-UMTS等内置优化,在不使用时放弃无线网络带宽,甚至可能进入低功耗状态。只有当有数据需要接收或发送时,手机才会返回其工作电源模式,并向套接字分配无线资源。您的 hibernate 套接字所做的一切就是消耗一些内存。
PS> 由于没有在 Android 上进行网络编程(直接在套接字级别)的第一手经验,因此我编写的大部分内容都是基于无线网络技术知识和通用 UNIX 套接字通信基础知识:-)。
只有当您喜欢我的回答并且觉得它有用时,才可以随意投票。
关于java - 打开套接字时 CPU 密集程度如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5542459/