• 又是一年末-总结自己APP的缺点


      再过几天,16年就过完了,想想自己又老了一岁,不禁感慨-时间过的真™快。这一年,有欢乐,有纠结,有痛苦,有辛酸。今年经历过的事情,有点多,有点乱。

      以往在谈论自己的缺点不足时,总是比较尴尬,或者不敢去直面,比如说面试的时候,总是一大堆的优点,当面试官问自己的不足时,捡一些不足道也的毛病说说。现在想,以后可不能再这么浑浑噩噩的过下去了。有不足,自己要发现,也要虚心接受别人的意见,说到这里,又想起了测试和技术说bug时,技术总是有大套大套的说辞,迫不得已review代码发现问题,也是风轻云淡改改一笔带过。看着从2013到2014再到2017,身子一年不如一年了,唯一没怎么改变的,就是卡里的余额了吧。

      这个APP做了一年多,大毛病没有,小毛病很多,自己知道的和不知道的,有些懒得改的,我希望能在明年一点点完善,做的更好。

      

      1、最大的问题,也是最突出的问题——应用后台运行。

      我这个应用,需要计算里程距离,所以只要用户不kill掉应用,它就要进行定位和位置上传。早在14年的时候,我就研究过后台实现,在这里我依旧用的是 “后台推送唤醒”。当然,我也一直在寻求更好更高效的解决方式,也实验过很多包括audio,VOIP之类的,要么就是审核不过,要么就是对系统有影响或者效果不尽人意。虽然现在的实现机制勉强可以完成需求,但是我会继续寻求更好的方式解决这个问题。

      2、web过多造成内存负荷较大。

      应用内有些资料填写页,由于要适应市场变化,资料随时会更改,所以这些填写提交页面大部分嵌入的H5来实现,有些包括图片的上传等,也用到了JS交互。在应用内加载了web后,释放了web对象,清空了cache缓存,总之能清空的全都清了个遍,但是占用的内存还是没有完全释放,查阅过很多文档和资料,建议弃用UIWeb,改用iOS8推出的轻量级WKWeb,好像内存问题会有很大的改善。嗯,这个问题是因为,一是比较懒,二是页面多,WK的实现方式包括委托都不一样,改起来有一定的工作量和风险。不过这个工作已经着手准备开始计划做,相信明年一定能完成。

      3、后台返回数据处理混乱—大部分闪退都是因为这个。

         嗯,我承认,这个确实是懒了。请求结果数据以JSON格式返回,如果返回fail,后台有好几种错误提示规则,要么是错误代码,要么是错误详情,要么是Java异常,不要抱怨后台人员,毕竟不是一个人在写,这些问题都可以通过大量判断来处理,但是,value为NULL的数据,并没有全部处理掉,解析JSON往model里放的时候,自己感觉会出现问题的字段,处理了这个NULL,以至于很多地方后台数据突然为NULL时,直接用回导致闪退。虽然意识到这个问题后,写了专门处理返回数据的过滤器,但是之前已有的代码并没有改,自己一直在对自己说,嗯,只是很小一部分,就是一个字,懒。从现在开始,就把数据过滤添加到每个model里。

      4、虽然没有任何人或用户提过,但是我知道,应用----耗电快。

      每五秒两次网络请求,固定的,而且还在定位,只要不kill掉应用或者不关掉后台刷新,那么在开始累计距离时,就会触发频繁的定位以及网络请求,当然,同时存在的还有屏幕常亮。不用担心,数据流量并不会太大,开一天也不过最多十几兆而已,但是电量就耗不起了,万幸的是,累计距离的用户大部分都是在车里,有用车载充电,所以耗电快这个问题一直没有暴露出来。也有人认为这并不能算个问题,理应正常才对啊,但是,我并没有去做任何优化耗电的算法和模块,不知道能不能在保证功能完整的前提下减少硬件的耗电。正因为没有去做,所以不能说做不到。接下来会尝试使用一些优化方法,为用户提供更好的体验。大功能要保证,小细节也要面面俱到。

      5、新用户不会用,老用户用不惯----界面设计缺陷。

      我从来没想到,我的应用需要安排客服去教用户如何使用。说起来,好多用户致电过来,说什么什么问题,本质就是功能找不到,信息项不会填。最开始的应用1.0,还挺容易上手使用的,基本上一看就会那种,第一界面简洁易懂,第二功能也少。经过了一年多的增增改改,应用功能丰富了很多,也好看精致了很多,但是用户反而不会用了。这个值得我们反思,注册流程增加了,我们就要加引导,功能增加了,我们就要从产品设计从UI设计上,做好入口的分类,而不是让用户打客服来问到底怎么用。这些我们都有待改进。是啊,由于一直执着于功能的完善,UI的精致,忽略了很多人性化的设计和提醒。当用户注册完成了一步,要进行下一步时,最好给全屏的引导或者高亮的提醒,就算只有单纯的文字提示也可以,不能像现在这样,用户完全不知道还有下一步,或者下一步从哪里进入。产品和UI没有考虑到的地方,作为优秀的技术人员,必须填补上这些空白,尽可能让小白用户都能很快上手使用。举个例子,在应用在后台累计距离时,系统内存不足,把我的应用释放掉了,但是用户并不知情,用户下次进入时,发现并没有这段距离,就懵了,我想,我们的应用软件是让每个用户都能达到自己想要的目的,而不是每天在吐槽这个找不到,那个不知道怎么回事。

      6、无网络或弱网络支持不好。

      应用做了数据缓存,可以做到无网络进入应用查看一些页面。但是并没有做实时数据的缓存,在网络不好的情况下,容易发生数据丢失,一旦给服务器的数据发送失败,没有缓存发出去的数据,也没有重发机制,导致用户在特殊环境下,统计不到具体的详细数据。我们在无网络时,会提示用户当前的网络状态,但是并没有根据无网络这个特殊情况做出正确的处理,完全把网络这个特殊情况抛给用户,我们完全可以有技术来解决这个问题,不管是把点数据写入本地库或者和服务器建立确认收发机制,都可以。

      

      还有好多好多问题,就不一一列举了,这些我已知的问题,并没有及时的解决,应该算得上一种过失吧。当我们每天宣传自己产品多么多么好,用户有多少多少的时候,是理应高兴的,对于技术来说,用户使用自己的产品,就是对自己的认可。但是高兴也别被冲昏了头脑,要清醒的意识到这些不足,每个应用都不完美,但那是我们的目标。

      年底了,不管是忙还是闲,都该好好静下心思考思考,新的一年该做什么,有什么目标。同时呢,也回顾一下已经快过完的这一年,发生了什么,学会了什么。可以是工作可以是生活,也可以是其他其他,不管什么,我都相信大家的2016全部是五彩斑斓的,有兴奋失眠时,也会有难过失眠时,都是自己度过的美好的/快乐的/忧伤的/难过的时光,都不要忘记坚持会让自己变得更好。我呢,尽管经历了刻骨又铭心,经历了彩虹又风雨,不也在用力地不忘初心。

      希望大家都能实现自己的小目标,都能越过越好。不乱于心 不困于情、不畏将来 不念过往。

  • 相关阅读:
    Windows远程桌面连接CentOS 7
    CentOS7 系统菜单中添加快捷方式
    CentOS 7 创建桌面快捷方式
    Centos7 可执行程序自定义为系统服务
    CentOS 7 中 Docker 的安装
    CentOS 7 需要安装的常用工具,及centos安装fcitx 搜狗输入法的坑旅
    C++中结构体与类的区别 2
    C++中结构体与类的区别 1
    C++ 11 自旋锁
    Imply.io单机安装
  • 原文地址:https://www.cnblogs.com/ChinaLoong/p/6207976.html
Copyright © 2020-2023  润新知