HTML5技术

独立开发 一个社交 APP 的架构分享 (已实现) - 指尖下的幽灵(2)

字号+ 作者:H5之家 来源:博客园 2016-07-19 16:00 我要评论( )

由于我网络请求这块没使用框架,所以线程的选用时 Thread + Handler 组合或 AsyncTask ,需要明确一点,AsyncTask 比 Thread + Handler 更耗资源,不过使用起来比较方便。 3,缓存层 Android 的数据存储方式有5种,

       由于我网络请求这块没使用框架,所以线程的选用时 Thread + Handler 组合或 AsyncTask ,需要明确一点,AsyncTask 比 Thread + Handler 更耗资源,不过使用起来比较方便。

3,缓存层

       Android 的数据存储方式有5种,分别是 SharedPrefrences、File、SQLite、ContentProvider、NetWork。我采用的是 SharedPrefrences 和 File即是文件存储,其中

  • 标记性数据采用 SharedPrefrences,例如是否隐藏操作记录,用户名称等
  • 帖子列表、评论列表类大批量数据采用了File文件存储,原因是操作方便,只需要序列化和发序列化操作就能很方便地读出缓存并显示
  • 4,网络层
  • 加载
         全部是自己基于 HttpUrlConnection 封装的工具类。

  • 逻辑

  • 5,实现层

           帖子分享,我采用的 OneKeyShare SDK,之所以使用它,是因为它把绝大部分的平台的SDK分享接口都集成了,例如微信、QQ、QQ空间、新浪微博、知乎等等等等。

       1) 注册与登录

  • 注册
  • 号码
  • 密码
  • 位数的限制,例如最少 6 位
  • 加密传输
  • 短信验证
  • 使用阿里大鱼服务商,服务端写好接口,移动端通过get或post手机号码过去,然后接口调用API发送
  • 重复发送的倒计时
  • 手机登录

  • 第三方登录

  • 微信登录
    使用的是微信开放平台的 SDK,注意要先判断用户是否有安装微信
  • 新浪微博登陆
    使用新浪开放平台的 SDK,新浪SDK会自动判断用户是否有安装新浪APP
  •    2) 发表帖子功能的实现

  • 编辑

  • 文字部分

  • 字数的限制
    一定要限制用户帖子的输入字数的限制,一来减少服务器负担,二来避免恶意刷帖。
  • 内容过滤
    要过滤掉某些敏感词,防止色情或其他内容出现

  • 用户位置获取
    使用百度地图API

  • 图片部分

  • 选择
  • 显示
  • 命名采用:用户帐号+帖子id+图片下标,这样的好处是,完全能够唯一标识,且在看帖页面加载方便,组合链接简单。
  • 在发帖页面显示缩略图,提供有点击看大图和移除的功能
  • 图片服务器采用腾讯云- - -万象优图
    1,具备缩放功能,方便生成、加载缩略图
    2,可以自定义添加水印
    3,鉴黄图,这是最重要的!
  • 视频录制

  • 封装系统的 Camera + surface 录制,返回路径
  • 预览的时候直接用mediaPlayer + surface 播放
  • 上传

  • 注意大小,我是压缩控制在450K左右
  • 好处:
    1, 加速上传速度
    2, 加快用户在加载图片时的速度
    3, 减少流量消耗
  • 先上传图片,在图片上传成功后,再开始上传文字内容,如果出错,图片可以直接覆盖,文字成功,图片失败时,帖子避免数据混乱
  • 采用线程池上传,一来方便控制并发数,二来方便回收内存
  •    3) 帖子列表的显示

  • 控件选取
  •        选用了安卓5.0 的 SwipeRefreshLayout + RecyclerView,原因是 SwipeRefreshLayout 自身带有下拉刷新,最早的时候使用的是 PullToRefresh 开源项目。RecyclerView 重写onScroll() 就可以搞定加载更多,还有一个原因,RecyclerView 自带有瀑布流布局属性。
           早之前我使用的是 LinearLayout 实现的,不断地 addView 再 remove,致命的缺点是内存消耗不合理。

  • 加载限制
  • 数据加载采用分批加载的方式进行,减轻服务器的并发请求负担和达到移动端的合理显示效果。
  • 帖子主要内容的加载应该只加载摘要,否则内容过多,会造成数据处理时间过长,显示慢。
  •    4) 帖子详情页的显示

  • 代码结构

  • 由于帖子的类型有三种,这三种帖子除了内容部分布局不一样,评论布局是一样的,分享、删除等按钮也是一样的,当然,也可以自己通过接口改变评论布局。所以在类的集成方面,我采用了三个抽象类父类,子类只需要传进入自己布局、实现评论数据适配器 Adapter 即可。
  • 逻辑

  • 数据请求,根据点击跳转过来的帖子 id 来进行服务器数据请求。
  • 楼层评论
  • 点赞
  • 布局

  •        采用的布局是 HeaderView + CommentView,HeaderView 用于显示帖子的所有内容含帖子点赞,CommentView 用来显示用户的评论

  • 加载顺序
    1,请求服务器数据,判断该帖子是否有被删除
    2,没被删除,那么先加载帖子的内容
    3,最后再加载帖子的评论
  •    5) 消息提醒

           消息提醒采用了极光推送的SDK实现

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • Dora.Interception: 一个为.NET Core度身定制的AOP框架 - Artech

      Dora.Interception: 一个为.NET Core度身定制的AOP框架 - Artech

      2017-05-02 11:00

    • 【Vue 入门】使用 Vue2 开发一个展示项目列表的应用 - zhangjk

      【Vue 入门】使用 Vue2 开发一个展示项目列表的应用 - zhangjk

      2017-04-30 16:00

    • 在Delphi下使用迅雷APlayer组件进行免注册开发 - Delphi力量

      在Delphi下使用迅雷APlayer组件进行免注册开发 - Delphi力量

      2017-04-28 15:00

    • 随应潮流-基于ABP+Angularjs现代化应用软件开发框架(1)-总体介绍 - 在路在的张

      随应潮流-基于ABP+Angularjs现代化应用软件开发框架(1)-总体介绍 -

      2017-04-22 08:04

    网友点评
    d