`
104zz
  • 浏览: 1508504 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

Android中TCP/IP 长连接 问题以及解决方案

阅读更多

在开发过程中,我们经常会用到TCP/IP连接实现即时数据传输,对于java Server 来说如果用在PC段问题不会太大,在PC上资源空间相对比较大,呆在手机上不一样,要考虑很多问题,下面我说说在手机客户端实现TCP/IP连接中,我们讨论下一下几个问题:

第一,耗电

        关于耗掉问题,我想很多朋友开发中也遇到过,其实在android中耗电主要是因为占用cpu时间长和一些感应器的使用,java中药实现长连接基本上都要实现两个线程一个接收一个发送数据,分分秒秒都在跑着两个线程对于手机来说能不耗电吗?当然。那我们要怎样解决呢,我这里给出几个建议,在android中,发消息线程我们可以用一个线程池,有消息发时跑一下相对没那么耗cpu这样不会一直占用cpu了,但是对于接收消息怎么解决呢,对于即时消息来说你不能让他等待一会再跑一下看看有没有消息吧,这样给用户体验很不好,一直轮询的跑看看又没消息有很耗电给人感觉这软件怎么那么流氓不知道在搞什么那么耗电,这样可能就不想用了。那怎么办?这里我给一个建议就是可以使用C/C++自己去封装一个TCP/IP长连接的库,这个库我们可以简单得实现连接,断开,还有发消息(发送线程可以不在这里处理),接收消息(接收线程在这里处理),在C/C++中可以Socket使用阻塞模式接收消息(即,有消息就接收没消息就自动等等在哪里),这样消息也能即时接收,耗电量也相对少很多,这个接收线程可以做得相对简单点,只接收数据,然后直接回调给上层处理就可以。

第二,内存

       手机中内存使用也是很致命,虽然现在的手机内存已经不小了,但是他不是只供应你一个应用使用,所以还得处理耗没有个空间,比如我们发送消息时会有很多数据包,发出去了也就不处理了。这样很多对象就没有得到及时得回收。我建议我们把发送完后的包以及接收到的包处理完后我们顺便把他置空,这样回收就会相对及时一些。

第三,保持长连接

       长连接很多朋友都知道使用,定时发送心跳包来维持,但是如果直接启用一个线程来去触发发送又是一个大隐患(耗电),在android 中我们可以使用定时广播机制实现,我们可以设定广播时间然后再广播接收器中发送心跳包,这个心跳包我们可以直接发送不适用线程,对于发送心跳来说比较频繁,使用线程还是会耗电,第二,我们心跳其实不需要一天到晚得发送,我们可以在用户使用完或者锁屏后25分钟就暂停发送,然后再过25分钟唤醒连接看看有没有消息有就接收,没有继续断开,如果用户打开应用到停止使用有等待25分钟断开然后再连接查看离线消息,这一个循环又能保证新消息的接收又不会一直占用CPU。

 

分享到:
评论

相关推荐

    基于Android的Socket(TCP/IP)在 LED灯光控制系统中的应用.pdf

    实现了通过无线wifi网络与Windows系统的电脑服务器之间进行通信,解决了如何利用基于Android系统的手持终端对Zigbee无线网络中的LED灯光进行远程调控的问题,提出并实现了一种新的LED灯的智能控制方案。

    Android与C#Tcp/Ip通信

    在IT行业中,Android和C#之间的TCP/IP通信是一项基础但重要的技术,特别是在构建跨平台应用时。本主题将深入探讨如何使Android客户端与C#服务器端实现高效且可靠的16进制数据传输。 首先,我们要了解TCP/IP协议。...

    androidstudio TCP客户端程序学习入门

    在给定的压缩包文件中提到的“Mysql”可能是相关的数据库资源,虽然标题和描述没有直接提及数据库,但TCP客户端程序常常用于与服务器进行数据交换,而数据库是常见的数据存储解决方案。如果需要在Android客户端与...

    Android中长连接的解决方案.docx

    本文将深入探讨Android长连接的原理、优势、问题及其解决方案。 首先,理解HTTP请求过程是基础。HTTP请求通常包括DNS解析、TCP三次握手、数据交换和TCP四次挥手。为了防止DNS劫持,有时会使用HttpDNS,直接通过HTTP...

    Android TCP Client demo

    以上就是关于“Android TCP Client demo”的详细知识,它涵盖了TCP通信的基本原理、Android环境下的实现细节、以及可能遇到的问题和解决方案。这个示例代码对于理解Android中的TCP通信以及开发相关应用具有很好的...

    基于Android手机终端的Socket(TCP_IP)在智能储药柜中的应用.pdf

    6. 中药材药店配发效率低下的解决方案:基于Android手机终端的Socket(TCP_IP)在智能储药柜中的应用,解决了中药材药店配发效率低下的问题,降低了发药事故的可能性,提高了服务质量和经营效益。 7. 无线通信技术在...

    tcp安卓插件和uniapp前端demo.rar

    TCP安卓插件与uni-app前端DEMO是针对移动应用开发中的网络通信问题提供的一种解决方案,主要涉及TCP/IP协议、Android原生开发以及跨平台框架uni-app的使用。在这个压缩包中,包含了安卓项目的源代码以及前端展示的...

    Delphi XE10.2 TCPIP服务端及客户端程序

    2. ** Indy (Internet Direct)**:Indy是一个广泛使用的组件库,为Delphi提供了一套完整的网络编程解决方案,包括TCP/IP、UDP、HTTP、FTP等协议的实现。在Delphi XE10.2中,开发者通常会利用Indy来创建服务器和...

    端到端通信中TCP穿越NAT的解决方案

    ### 端到端通信中TCP穿越NAT的解决方案 #### 概述 随着互联网的快速发展及IPv4地址资源的紧缺,网络地址转换(Network Address Translation, NAT)技术被广泛应用于解决IP地址不足的问题。然而,NAT技术的普及却给...

    Android应用源码http、udp、tcp网络交互组件

    本项目"Android应用源码http、udp、tcp网络交互组件"提供了一个开源解决方案,用于处理HTTP、UDP和TCP这三种常见的网络协议。以下将详细介绍这三种网络协议及其在Android中的应用。 1. HTTP(超文本传输协议):...

    基于SIP协议的Android端IP电话APP.zip

    在Android平台上实现SIP电话应用,需要理解TCP/IP协议、Java编程语言以及Apache等开源库的使用。 1. **SIP协议详解**:SIP协议是一个文本协议,类似于HTTP,用于处理多媒体通信的初始化和管理。它定义了用户如何...

    KNX系统集成网关

    在智能楼宇服务方面,KANONTEC的KTS网关方案提供了一套完整的系统集成解决方案。例如,可以实现iPad、Android设备与各种智能系统的集成,包括远程控制、背景音乐、家电系统、楼宇自动化、可视对讲、空调系统、安防...

    基于TCP协议的Android模拟器间通信在教学中的应用研究.pdf

    在探究基于TCP协议的Android模拟器间通信及其在教学中的应用时,首先要了解TCP协议(传输控制协议)是互联网中用于提供可靠通信的协议之一,常与IP协议一起工作,形成TCP/IP协议族。TCP协议确保数据在传输中不会丢失...

    203-ESP32_SDK开发-TCP服务器(模组AP热点模式,支持多个客户端连接通信) - 杨奉武 - 博客园1

    此外,还有关于LUA脚本语言、C#、Android和微信小程序的开发教程,这些都是构建物联网解决方案时可能需要的技能。 在TCP服务器的应用场景中,ESP32模组会开启AP模式,创建一个热点,其他设备连接后,可以使用TCP...

    大学毕业论文-—基于android系统的即时通信系统研究.doc

    本设计基于Android平台的即时通信系统研究,旨在解决当前即时通信软件的不足之处,提供了一种基于Android平台的即时通信系统解决方案。该系统具有良好的可扩展性、灵活性和可维护性,能够满足当前互联网上即时通信的...

    android手机变无线扫描枪(附源码)

    总结来说,将Android手机转变为无线扫描枪涉及的技术点主要包括:Android应用开发、ZXing库的使用实现扫描功能、WebSocket或TCP/IP的网络通信、电脑端程序的编写以接收和处理数据,以及安全的设备配对机制。...

    STM32+AppInventor+ESP8266设置AP模式和手机TCP通信(完整程序+APP)

    综合以上,这个项目是一个完整的物联网解决方案,通过STM32控制ESP8266创建Wi-Fi热点,再利用App Inventor开发的手机应用与之进行TCP通信,实现设备间的无线数据交换。这样的技术组合在智能家居、远程控制等领域有着...

    Android应用源码远程桌面连接安卓客户端项目

    【Android应用源码远程桌面...通过深入研究这个项目,开发者不仅可以学习到Android应用的基础知识,还能掌握高级的网络编程和远程桌面连接技术,这对于想要构建跨平台远程控制解决方案的人来说是非常宝贵的实践经验。

    AndroidWiFi连接Adb源码

    在Android开发过程中,调试是必不可少的一环,而ADB(Android Debug Bridge)则是Android系统提供的一款强大的命令行工具,用于连接和管理设备或模拟器。本文将深入探讨如何通过WiFi连接Adb,实现PC对Android设备的...

    Android端socket框架EasySocket

    这篇博客中作者详细介绍了如何集成和使用EasySocket,以及常见问题的解决方案,是学习和使用EasySocket的重要参考资料。 总之,EasySocket是Android开发者实现Socket通信的一个强大工具,它通过提供简洁的API和丰富...

Global site tag (gtag.js) - Google Analytics