今天跟朋友聊天,他做的是一款基于android平台的聊天类(IM)软件。在聊天过程中,我收获了许多,下面由此篇bolg分享给大家。
1. 软件背景
这是一款运行在android平台上面的通讯软件。使用socket与服务器进行连接,进行通讯。当用户在打开网络连接的情况下,用户与已经注册该软件的人进行通讯,消息便会走网络进行通讯。条件不满足就会依循移动服务提供商的短信路线了。 剩下的功能可以参见腾讯的“微信”和小米的“米聊”。
2. 技术架构
网络模块: 应用通过Socket与服务器进行连接。
DB模块: 数据中存储了玩家的明片信息。
UI模块:针对标准UI的扩展。
3. 项目中遇到的问题
3.1 加快显示?
onStart() --> onResume()方法的执行速度。图像是在OnResume中才刷出来的,那么就要尽量减少前面的操作。在有条件的情况下,key采用多线程的方法来提升用户体验。
3.2 减少电量消耗
由于在网络连接的设备,必须需要一个service来监听网络连接。这个连接是长连接,即是说在系统关闭屏幕的情况下也要运行(设置PowerManager)中的代码。
心跳包的连接要尽量小,并且需要控制频率。 最好要在1分钟以上。如果是实时性要求较低的应该,可以拉伸到15分钟一次。
3.3 采用Activity池的方法来减少Acrtivity的创建。采用activityGroup的方式来解决这里的问题。
3.4 针对bitmap的解析时的优化。
3.5 针对网络模块这里的内容,消息等相关代码,可以依据服务器来进行调整。采用跟服务器一致的方案,甚至是进行代码复用。这样可以极大的减少代码量。
3.6 手机应用的安装包大小一定要控制在2M以下,否则很难有人会对该软件有兴趣。
3.7 注册机制。 上行注册: 设置一个流氓的按钮,直接后天发送一个条短信与服务器进行注册。 下行注册: 玩家得输入自己的手机号码,服务器向玩家发送短信来进行验证。或者是自己给自己发个短信来进行注册