由于我网络请求这块没使用框架,所以线程的选用时 Thread + Handler 组合或 AsyncTask ,需要明确一点,AsyncTask 比 Thread + Handler 更耗资源,不过使用起来比较方便。
3,缓存层Android 的数据存储方式有5种,分别是 SharedPrefrences、File、SQLite、ContentProvider、NetWork。我采用的是 SharedPrefrences 和 File即是文件存储,其中
加载
全部是自己基于 HttpUrlConnection 封装的工具类。
逻辑
帖子分享,我采用的 OneKeyShare SDK,之所以使用它,是因为它把绝大部分的平台的SDK分享接口都集成了,例如微信、QQ、QQ空间、新浪微博、知乎等等等等。
1) 注册与登录
手机登录
第三方登录
使用的是微信开放平台的 SDK,注意要先判断用户是否有安装微信
使用新浪开放平台的 SDK,新浪SDK会自动判断用户是否有安装新浪APP
2) 发表帖子功能的实现
编辑
文字部分
一定要限制用户帖子的输入字数的限制,一来减少服务器负担,二来避免恶意刷帖。
内容过滤
要过滤掉某些敏感词,防止色情或其他内容出现
用户位置获取
使用百度地图API
图片部分
1,具备缩放功能,方便生成、加载缩略图
2,可以自定义添加水印
3,鉴黄图,这是最重要的!
视频录制
上传
1, 加速上传速度
2, 加快用户在加载图片时的速度
3, 减少流量消耗
3) 帖子列表的显示
选用了安卓5.0 的 SwipeRefreshLayout + RecyclerView,原因是 SwipeRefreshLayout 自身带有下拉刷新,最早的时候使用的是 PullToRefresh 开源项目。RecyclerView 重写onScroll() 就可以搞定加载更多,还有一个原因,RecyclerView 自带有瀑布流布局属性。
早之前我使用的是 LinearLayout 实现的,不断地 addView 再 remove,致命的缺点是内存消耗不合理。
4) 帖子详情页的显示
代码结构
逻辑
布局
采用的布局是 HeaderView + CommentView,HeaderView 用于显示帖子的所有内容含帖子点赞,CommentView 用来显示用户的评论
1,请求服务器数据,判断该帖子是否有被删除
2,没被删除,那么先加载帖子的内容
3,最后再加载帖子的评论
5) 消息提醒
消息提醒采用了极光推送的SDK实现