记一个Android微博客户端的开发

learningITwell 2019-06-26

github地址

最近抽了点时间开发了一个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显示和响应点击事件。

运行截图

记一个Android微博客户端的开发

记一个Android微博客户端的开发

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

相关推荐