最近抽了点时间开发了一个Android微博系统来练手,踩了不少坑,也积累了一些经验。

因为之前没有做过和服务器的交互。先用php+mysql+redis构建web后台,通过json格式提供接口,

这里踩了Gson泛型的坑,不过我是通过对json协议做了特别设计绕过了坑,由Okhttp搭配Gson提供了统一

的服务接口,用起来还是比较顺手,也没有采用Retrofit之类的框架。

由于我是边做边设计架构,因此也走了不少弯路,添加数据库表字段,然后又要修改对应的JavaBean,不过好在对架构影响不大,因此改动不大,拓展性良好。

个人觉得最重要的是设计好Json数据协议,利用PHP输出Json数据,采用Okhttp和Gson得到Java数据模型,Gson泛型的问题,将实体消息封装到inner字段内,通过类继承绕开泛型,code字段和msg字段交给BaseActivity,BaseFragment检查处理。

Token字段登录后存入MySQL,并缓存到Redis,登录后自动刷新,旧的自动废弃。

其余主要是一些常规的优化,图片的标签防止错位,缩略图,LRU的缓存等

微博比较有意思的就是@功能,#话题#功能,通过正则表达式匹配来提取信息,生成提醒等批量插入MySQL,提高性能,#话题#功能有起始和终止#号,比较好匹配,而@功能由于没有中止符号较为难办,本项目支持两种:@Java@Scala@Kotlin 或者@Java @Scala @Kotlin 即通过后面的@符号或者空格来界定,不知有无更好的设计。UI通过SpannableString显示和响应点击事件。

运行截图

用了一些开源的工具库,其中还有不少坑,不得不打补丁修补。不过界面的设计不停地修改,还是令人挺满意的。

java 微博客户端_记一个Android微博客户端的开发相关推荐

  1. eos区块链 java客户端_分享一个网友第一次开发EOS区块链总结的经验

    在处理项目时,用Java Connector for EOS区块链编写: 创建钱包 创建帐户 创建交易 创建签名交易 在帐户之间转移代币 我遇到了各种和运行本地EOS节点需要遵循的基本步骤.这个小指南 ...

  2. java eventbus 原理_本文为 Android 开源项目实现原理解析 EventBus 部分,从源码分析 EventBus 的实现原理...

    之前太忙导致 Android 开源项目实现原理解析 一度搁浅,目前一期进行中,我也完成了 EventBus 分析的初稿,大家可以稍微看看后面会继续润色下. PS:本文直接复制 Markdown,格式有 ...

  3. java安卓计时器_如何在android中设置计时器

    通过java.util.Timer和java.util.TimerTask使用计时器的标准Java方法在Android中运行良好,但是你应该知道这个方法创建了一个新线程. 您可以考虑使用非常方便的Ha ...

  4. 说一说我的java学习路途(记一个前端学习java日常)

    我是赵小左.一个生活在新一线城市的前端码农.在几年前,这个被人称之为画页面的工作,前端从业近四年时间,java接触有一年时间.梦想是前端深入,全栈都会.喜欢逛社区论坛,聊天,研究下开源项目. 其实我的 ...

  5. A002、java环境搭建_第一个java程序

    目录 1.内容介绍 2.软件开发概述 2.1 软件开发概念 2.2 软件开发示例 2.3 软件开发语言 2.3.1 计算机语言概述 2.3.2 计算机语言分类 2.4 小结 3.Java概述 3.1 ...

  6. 安卓系统应用Java什么核心技术_《深入Android应用开发:核心技术解析与最佳实践...

    图书目录: 前言 第1章 深入解析Android核心组件和应用框架 1.1 核心组件详解 1.1.1 Activity组件 1.1.2 Service组件 1.1.3 Intent组件 1.1.4 B ...

  7. android新闻客户端报告,简易的Android新闻客户端

    学完Android基础之后不知道该怎么办?现在开始实战吧! 现在来看看一款简易的Android新闻客户端是怎么做的,当然,获取网络数据的这一部分我是使用别人做好的本地客户端,然后通过组建本地数据库来使 ...

  8. 开源android客户端_4个开源Android电子邮件客户端

    开源android客户端 即使年轻一代的成员试图将电子邮件作为"老年人的交流"来掩埋,但现实情况是,电子邮件离死刑不远了. 尽管协作工具 ,社交媒体和短信很重要,但它们还不能替代电 ...

  9. python编写ftp客户端_用Python写FTP客户端程序

    0 前言: ftp客户端相信大家都用过,那么我们为什么还要用Python写ftp客户端呢? 我想有两个原因: 一是写出更好的ftp客户端应用程序,方便大家使用: 二是定制一些特殊服务,例如每天定时下载 ...

最新文章

  1. C#串口通信学习笔记
  2. 途虎养车APP--参数分析
  3. TColorToHex 与 HexToTColor
  4. java2第九章的总结_java并发的艺术-读书笔记-第九章线程池
  5. 【转】ubuntu 下 VNCview 远程桌面无法传输文件问题
  6. 栈、队列 java代码实现
  7. TS Introduction(介绍)
  8. vue第一次加载慢怎么优化_vue如何优化首屏加载速度?面试过程遇到的性能优化问题...
  9. iOS动画 三维透视投影 m34
  10. html 文本框 p,Javascript实现HTML表单form多个HttpPost请求
  11. Educational Codeforces Round 7
  12. CentOS文件系统 磁盘格式化及挂载的两种方法
  13. Gantt - attachEvent事件监听 - 一个参数事件
  14. 监控--CactiEZ使用
  15. 个人微信开发api文档
  16. FreeSWITCH 放音相关APP/API
  17. 【004】VS2017配置OpenCV4.1.0
  18. 大数据分析应用的九大领域
  19. 【无线科普】802.11n 中HT20 HT40的区别和信道划分及plus,minus含义
  20. Linux中进程的退出

热门文章

  1. 干燥机是什么,作用是?
  2. Sqlserver 死锁查询以及解锁方法
  3. remote: error: cannot lock ref ‘refs/heads/dev/mz/dev‘: ‘refs/heads/dev‘ exists; cannot create ‘refs
  4. 完整实现照片的上传 ,但是没有添加微信自带的照片审核功能 我这个是后台人工审核
  5. 【C4D教程】全网最好的C4D常用插件分享!错过就没有了!
  6. python 拼音相似度_Python实现简单的文本相似度分析操作详解
  7. 达内第二个月考java核心题目,(完整版)达内科技JAVA项目经理入职考试--I(不含答案)--新...
  8. AUTOIT 3.0 基本语法:参考中文文档
  9. 发那科法兰克加工中心FANUC 0MD 操作面板讲解,看看这些按键是什么意思
  10. 封装-private关键字