PS:
由于时间比较赶的缘故,加上考试周,组员各人对Android的掌握程度不同,分工的时候没有能比较好地考虑到,目前安卓端中涉及网络交互的功能也还未对接后台接口并进行界面渲染,仅实现了网络封装,故不支持用户个人信息、任务集信息的上传和同步,目前只支持本地化操作以及普通的单聊,与预期的有很大距离,确实有些遗憾。本项目集成了多个第三方模块和库,故最低支持的Android版本偏高,有些机型会出现闪退和一些异常现象。
学迹无涯(LearningBoundless)
一款基于学习轨迹的好友(社交)监督App。
为了便于后期的维护和迭代,对代码进行解耦和减少代码冗余,对常用的类进行了封装,后期的开发将基于这些封装类。
项目中的所有的活动类(Activity)均要继承自BaseActivity,所有的碎片类(Fragment)均要继承自BaseFragment。如需在特定Activity或Fragment子类中实现特定逻辑,可以 Override 基类的 getContentLayoutId()、initWidget() 、initData()等方法;
获取控件实例尽量避免使用findViewById,借助ButterKnife,改用注解方式 @BindView 进行依赖注入获取;
项目中但凡使用到网络部分,即向后台发送请求以获取响应,均需借助网络封装类SendMessageManager的getXXX接口,响应内容可以随时随地在任何Activity和Fragment通过注册EventBus实例来订阅获取,从而渲染界面;
所有网络响应数据实体类均以xxxResponseInfo命名;
项目中的变量命名、方法命名、控件命名、xml布局文件命名等规范参照:
(参照即可,不必严格照搬)
项目中使用到的所有常量均放置到Constants常量类中;
项目中使用到的所有字符串均放置到strings.xml文件中,java文件中使用字符串参照:
在Activity中:String str = getResources().getString(R.string.str_name);
在Fragment中:String str = getActivity().getResources().getString(R.string.str_name);
通用:String str = MyApplication.getGlobalApplication().getResources().getString(R.string.str_name);
出于实际考虑,因为要分工,每个人对于MVP的掌握程度不同,故使用传统的企业模块分包方法,各个模块解耦,方便后期整合和维护。
-
请求方式:get
-
请求参数:username
-
响应格式示例:
{ "username": "wuchangi", "password": "132152315", "avatar": "wqeqwgrewhtrehrtejrej", "level": 2 }
-
请求方式:get
-
请求参数:username
-
响应格式示例:
[{ "id": 1, "startTime": "2018/12/26 18:00", "endTime": "2018/12/26 21:00", "priority": 1, "content": "刷完算法导论第四章第二节", "username": "chenminghai" }, { "id": 2, "startTime": "2018/12/26 21:10", "endTime": "2018/12/26 22:10", "priority": 2, "content": "写移动开发实验报告", "username": "chenminghai" }, { "id": 3, "startTime": "2018/12/26 22:18", "endTime": "2018/12/26 23:20", "priority": 3, "content": "复习程序设计艺术PPT", "username": "chenminghai" }]
-
请求方式:get
-
响应格式示例:
[{ "id": 1, "startTime": "2018/12/26 18:00", "endTime": "2018/12/26 21:00", "priority": 1, "content": "刷完算法导论第四章第二节", "username": "chenminghai" }, { "id": 2, "startTime": "2018/12/26 21:10", "endTime": "2018/12/26 22:10", "priority": 2, "content": "写移动开发实验报告", "username": "chenminghai" }, { "id": 3, "startTime": "2018/12/26 22:18", "endTime": "2018/12/26 23:20", "priority": 3, "content": "复习程序设计艺术PPT", "username": "chenminghai" }, { "id": 4, "startTime": "2018/12/27 17:30", "endTime": "2018/12/27 18:00", "priority": 1, "content": "去西田跑步", "username": "wuchangi" }, { "id": 5, "startTime": "2018/12/27 19:30", "endTime": "2018/12/27 20:30", "priority": 2, "content": "整理复习资料", "username": "wuchangi" }, { "id": 6, "startTime": "2018/12/26 17:30", "endTime": "2018/12/26 21:30", "priority": 1, "content": "移动开发实验作业", "username": "ticktock" }, { "id": 7, "startTime": "2018/12/26 20:00", "endTime": "2018/12/26 22:00", "priority": 2, "content": "科技文献PPT准备", "username": "SeanLiaoy" }]
-
请求方式:post
-
请求体格式示例:
{ "username": "newone", "password": "223634", "avatar": "ghuweghueiwrhgurhghghhghghhg", "level": 1 }
-
响应格式示例:
{ "code": 0, "msg": "成功!", "data": { "username": "newone", "password": "223634", "avatar": "ghuweghueiwrhgurhghghhghghhg", "level": 1 } }
-
请求方式、请求体格式、响应格式同5.4
-
请求方式:post
-
请求体格式示例:
[{ "id": 1, "startTime": "2018/12/26 18:00", "endTime": "2018/12/26 21:00", "priority": 1, "content": "刷完算法导论第四章第二节", "username": "chenminghai" }, { "id": 2, "startTime": "2018/12/26 21:10", "endTime": "2018/12/26 22:10", "priority": 2, "content": "写移动开发实验报告", "username": "chenminghai" }, { "id": 3, "startTime": "2018/12/26 22:18", "endTime": "2018/12/26 23:20", "priority": 3, "content": "复习程序设计艺术PPT", "username": "chenminghai" }]
-
响应格式示例:
{ "code": 0, "msg": "成功!", "data": [ { "id": 1, "startTime": "2018/12/26 18:00", "endTime": "2018/12/26 21:00", "priority": 1, "content": "刷完算法导论第四章第二节", "username": "chenminghai" }, { "id": 2, "startTime": "2018/12/26 21:10", "endTime": "2018/12/26 22:10", "priority": 2, "content": "写移动开发实验报告", "username": "chenminghai" }, { "id": 3, "startTime": "2018/12/26 22:18", "endTime": "2018/12/26 23:20", "priority": 3, "content": "复习程序设计艺术PPT", "username": "chenminghai" } ] }