美文网首页
Android项目HeartWall优化(一) 开篇

Android项目HeartWall优化(一) 开篇

作者: 天上有明月 | 来源:发表于2019-04-22 22:04 被阅读0次

    最近在准备面试,很多都谈到项目经验。所以重新回顾半年前写的一个app,这个项目是之前参加一次移动端比赛时完成的,当时总共花了两个月时间完成+修改。但是由于当时比较懒,写完就扔一边了,没有总结经验,而且有些bug也没有解决。现在来完成这项工作。

    github链接

    功能介绍

    这个app主要功能是记录用户的心情和计划,信息会以钉子的形式钉在墙上。心情可以选择是否公开和匿名。用户可以查看别人公开的心情。


    主界面

    上面是用的banner轮播库,加号按钮是一个菜单(用的别人的库),下面两个模块是当日使用情况,点击可以查看具体图表。

    • 发布心情和计划


      心情墙
      计划墙

      新建一个钉子把它拖到任意位置,用锤子钉下就可以编辑信息了。可以随时查看详细。心情钉子可以选择公开和匿名。信息会保存在服务器端上。

    这两个界面用viewpage+fragment实现。

    • 查看别人公开发布的心情


      评论墙

      随机抽取数据库里5条记录显示,只有厄运钉子长按可以评论。

    UI是用的github上的框架。用别人的只是因为自己写的太丑了。。。重构的时候会重新写的。

    • 统计信息图表显示


      统计图表

    用AChartEngine图表库实现。

    • 背包功能,查看之前发布的记录


      背包

    这里用ExpandListView实现的,它是Listview的子类,可以实现二级列表。

    整个项目用的MVP架构,网络请求使用OKhttp。

    目标

    重新学习这个项目有两个目的,重构代码性能优化

    重构

    其实之前写完这个项目扔一边去,主要是因为觉得自己写的很垃圾,想优化又有一种无从下手的感觉。说一下我觉得不大好的地方。有些是已完成的,一些是计划完成的。

    • Activity过于臃肿
      这个问题当时写项目的时候就感觉到了,最开始用的MVC,之后就改成MVP了。虽然用MVP类接口多了一些,但是结构确实清晰了很多。再者就是抽取基类,比如 显示正在加载 显示toast 一些初始化绑定操作都是一样的。这样可以减少很多重复代码。
    • 类功能过多
      比如model层负责网络请求和数据库存储两个部分。个人感觉network和database分开比较好。
    • okhttp + handler代码过于繁琐
      每次写网络请求都是activity里定义4 5个网络请求状态常量,一堆sendMessage,然后handleMessage里一堆case分支。其实主要是因为okhttp异步请求在子线程里,必须手动编写handler来切换线程。
      后来,我了解到了retrofit + rxJava......后来都用这俩完成网络请求。不得不说,不用手动切换线程和手动解析json真的是太太太方便了!!!
    性能优化

    性能优化这方面暂时了解不多,大致思路是检测+定位+优化。涉及到一些工具的使用。这些会慢慢去学习的。

    我的想法是从下面四个方面来入手。

    • 减小安装包apk体积
    • 减小运行内存
    • 减小流量使用
    • 提高用户体验

    下一篇是讲具体如何完成的。

    相关文章

      网友评论

          本文标题:Android项目HeartWall优化(一) 开篇

          本文链接:https://www.haomeiwen.com/subject/ziwugqtx.html