




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、GIT 工具使用1、 服务器搭建(截图见 PPT)2、 客户端安装及使用3、 常见操作4、 注意事项:的处理1、admin删除2、localhost 换成 ip 地址a)b)由于服务器存在安全客户端如果想要上必须对此问题进行处理,即不做安全校验Cmd 中输入命令:git config -global -bool -add http.sslVerify falsec) 工程提交时需要设置忽略文档信息(原则:在本地能够生产的文件都不需要提交)d) 代码更新时需要先从服务器获取最新的更新,然后拉取代码。e)MVC 转换到 MVPMVC 模式M:m V:viewC:controller在 Androi
2、d 中默认按 MVC 的方式构建项目,Vlayout,CActivity。登陆案例代码分析。MVP 模式M:m- 1 -北京市昌平区建材城西路龙办公楼一层:V:view P:presenter我们这里把与业务有关的代码都放到了 P 中。解耦和方式1、 利用配置文件,使用反射获取到需要加载的对象。2、 设计模式:单例、工厂、观察者Dagger2Dagger2 简介1、什么是 Dagger2?Dagger 是为Android 和 Java 平台提供的在编译依赖注入的框架。编译时:编辑代码(rebulid),我们完成所需对象的注入。(假设使用反射,应该是什么时候起作用?)。2、为什么使用 Dagge
3、r2?Dagger2 解决了基于反射带来的开发和性能上的问题。3、 做什么工作?本项目中 Dagger2 主要用于做界面和业务之间的。使用手册一、引入配置1、 添加 dagger2 的依赖compile 'com.dagger:dagger:2.6'2、 编译代码的插件配置(android-apt)a) project 的 gradle 中添加buildscript dependencies classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'b) apt 插件的使用modle 的 gradle 中
4、添加apply plugin: 'com.neenbedankt.android-apt'c) 关联 Dagger2dependencies apt 'com.dagger:dagger-compiler:2.6'- 2 -北京市昌平区建材城西路龙办公楼一层:二、操作步骤(熟练掌握)三、深入(了解)在操作中会使用到Inject、Module、Provides、Conponent 注解,那么他们分别在完成什么工作?MainActivity_MembersInjectorpublic void injectMembers(MainActivity instance)
5、 if (instance = null) instance.presenter = presenterProvider.get();- 3 -北京市昌平区建材城西路龙办公楼一层:MainActivityPresenter presenter=new MainActivityPresenter(this);InjectConponentModuleProvides其实,Dagger2 在使用这几个注解解决三个问题。1. 创建对象的代码放到那里去了?2. 创建好的对象给谁(指定接收者)?3. 如何将创建好的对象赋值给接收者?l指定创建对象的类(组件)和方法Module:指定创建对象的类Provi
6、des:指定创建对象的方法初始时:public class MainActivityModule public String createString()return new String(“itheima”);添加注解后:Moudlepublic class MainActivityModule Providespublic String createString()return new String(“itheima”);l指定接收者创建好的对象需要赋值给指定的目标,我们需要通过Inject 注解告知 Dagger2 容器,把已经创建好的对象赋值给谁。public class MainAc
7、tivity.Inject String target;l将接收者和创建好的对象在一起通过Component 来指定工作由哪个接口完成,通过这个接口我们可以看到组件和接收者。ButterKnife 工具使用配置依赖:compile 'com.jakewharton:butterknife:5.1.1'安装插件:在 plugins 中搜索 butterknife,安装 Android ButterKnife Zelezny控件初始化操作:- 4 -北京市昌平区建材城西路龙办公楼一层:Retorfit一、Retorfit 简介Retorfit是一个功能强大的联网工具。可以看成是OK
8、Http+数据(json、xml等)的组合。说明文档::- 5 -北京市昌平区建材城西路龙办公楼一层:二、使用手册1.引入配置l添加Retrofit依赖:compile 'com.squareup.retrofit2:retrofit:2.1.0'使用Gson进行数据lcompile 'com.code.gson:gson:2.2.4'l将Retorfit与Gson关联compile 'com.squareup.retrofit2:converter-gson:2.1.0'2.使用步骤1)创建Retorfit.Builder对象,通过Builde
9、r指定基本配置信息。2)通过Builder构建Retorfit对象3)配置和参数测试4)完整"itheima"&password="bj"组合5)执行联网操作- 6 -北京市昌平区建材城西路龙办公楼一层:Call<ResponseInfo> call =api.login(“itheima”,”bj”);call.enqueue(new Callback<ResponseInfo>() Overridepublic void onResponse(Response<ResponseInfo> response,
10、 Retrofit retrofit) / 结果处理Overridepublic void onFailure(Throwable throwable) ResponseInfoAPI api = retrofit.create(ResponseInfoAPI.class);public interface ResponseInfoAPI GET("TakeoutService/login")Call<ResponseInfo> login(Query("username") String username,Query("passw
11、ord") String password);注:ResponseInfo 是服务器回复数据封装成的对象。Retrofit retrofit = builder.build();Retrofit.Builder builder = new Retrofit.Builder();builder.baseUrl("");builder.addConverterFactory(GsonConverterFactory.create();请求方法:GET / POSTURL处理:测试 "itheima"&password="bj&qu
12、ot;替换原则:1、Path - 替换参数GET("/group/id/users")public Call<List<User>> groupList(Path("id") intgroupId);2、Query - 添加参数GET("/group/id/users")public Call<List<User>> groupList(Path("id") int Query("sort") String sort);groupId,3、Quer
13、yMap - 如果有多个GET("/group/id/users")参数,把它们放在Map中public Call<List<User>> groupList(Path("id") QueryMap Map<String, String> options);intgroupId,Ormlite 工具使用配置compile 'com.j256.ormlite:ormlite-android:5.0'使用常用注解DatabaseTable(tableName 指定实体和表的一一对应关系DatabaseFie
14、ld()="t_user")指定属性与表中列的一一对应关系常用配置说明:主键:id = true自增主键:generatedId = true- 7 -北京市昌平区建材城西路龙办公楼一层:/ 异常处理);列名:columnName = "name" 是否为空:canBeNull = true 外键:foreign = true示例:DatabaseTable(tableName = "t_address") public class AddressBean DatabaseField(id = true) private int _i
15、d; DatabaseField(canBeNull = false) private String goodsAddress; DatabaseField(canBeNull = false) private String village;DatabaseField(canBeNull = false,foreign "user_id",foreignColumnName = "_id")private UserBean user;DatabaseTable(tableName = "t_user") public class Us
16、erBean DatabaseField(id = true) private int _id;ForeignCollectionField(eager = true)= true,columnName =private ForeignCollection<AddressBean> addressList;DBHelper 管理与原声的 DBHelper 相同,主要负责数据库的创建和表的维护。需要继承 OrmLiteOpenHelper 类。使用工具:TableUtils 完成表的相关操作,如创建、清空、删除项目整合包结构划分。项目比较复杂时,大家开始动手完成代码前必须要想清除,代
17、码是放在哪里的。- 8 -北京市昌平区建材城西路龙办公楼一层:业务层联网操作依据接口文档中给出的服务器回复信息,设置 Retorfit。由于服务器回复的是 Json 文件,并且服务器地址一般情况下new Retrofit.Builder().变动,所以 Retorfit 的创建可以在业务层基类中完成baseUrl(Constant.HOME). addConverterFactory(GsonConverterFactory.create(). build();从接口文档中我们知道,回复的数据格式是统一的,我们仅仅封装一个对象就可以满足网络的需求- 9 -北京市昌平区建材城西路龙办公楼一层:与
18、之对应的 API 接口设置一个就能满足需求。不同的模块在处理时只需要增加对应的方法即可,方法返回的类型是相同的。所以我们自需要创建 ResponseInfoAPI 的实现类对象就能满足需求。ResponseInfoAPI responseInfoAPI = retrofit.create(ResponseInfoAPI.class);可以集成到业务的基类中。联网回复结果处理当获取到服务器返回数据后会出发设置好的 Callback,两个方法如下:public void onResponse(Call<ResponseInfo> call, Response<ResponseIn
19、fo> response)public void onFailure(Call<ResponseInfo> call, Throwable t)我们需要对回复的结果做进一步处理,首先必须要code 值,如果为 0 表示当前请求操0 表示服务器处理该请求出现问题,比作服务器处理如:用户名或,返回用户想要数据,如果不为输入错误。这个信息我们需要统一展示给用户。所以我们需要对两个方法进行统一处理。在 onResponse 中需要ResponseInfo body = response.body(); if("0".equals(body.getCode() /
20、服务器处理,可以data 数据了parseDestInfo(body.getData();elseString error=errorInfo.get(body.getCode(); onFailure(call,new RuntimeException(error);如果出现服务器处理错误会出发 onFailure 方法,同时由于网络问题也会触发该方法,我们- 10 -北京市昌平区建材城西路龙办公楼一层:需要对出发来源进行区分,可以定义一个的异常,封装服务器返回错误提示信息,展示给用户,如果是网络问题则提示:请检查网络,或服务器忙等。代码如下(这里使用了RuntimeException)pu
21、blic void onFailure(Call<ResponseInfo> call, Throwable t) if(t instanceof RuntimeException)showError(RuntimeException)t).getMessage();showError("服务器忙,请稍后重试");业务层数据库操作数据库需要使用到 DBHelper,所以我们在 DBHelper 类中实现了单例,这样就不用每次建了。需要重点注意的问题,操作 DBHelper 时需要传下文,我们需要使用生命周期较长的Application 作为参数,不能使用某个具体的 Activity 或 Fragment 对象。公共布局处理首先完成 MainActivity,布局比较简单,我们经常实现,所以 layout 大家可以直接拷贝了。问题是:很多项目中都会有这种需求,但 Item 的数量不等,我们不得不调整代码,有通用的实现方式吗?注意我们 Layou 的底部导航部分内容。- 11 -北京市昌平区建材城西路龙办公楼一层:这
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国液压连接钳数据监测研究报告
- 学区房卖房合同范本
- 临时修理协议签订
- 科技引领教育公平的探索与实践
- 儿童玩具材料采购合同
- 科技企业的商业决策与伦理考量
- 2024年长沙市雨花区雨花实验第三小学教师招聘考试真题
- 科技园区电力设施隐患排查与整改工作汇报
- 会议展览设计服务协议
- 亲子活动中介合同
- 德州环锂新能源科技有限公司2万吨年废旧锂电池回收项目环境影响报告书
- 2025年江苏省中职《英语》学业水平考试核心考点试题库500题(重点)
- GB/T 1346-2024水泥标准稠度用水量、凝结时间与安定性检验方法
- 2025年湖南中医药高等专科学校高职单招职业技能测试近5年常考版参考题库含答案解析
- 2025年江苏信息职业技术学院高职单招职业适应性测试近5年常考版参考题库含答案解析
- 易制毒化学品理论考试试题及答案
- 【MOOC】跨文化交际-苏州大学 中国大学慕课MOOC答案
- 小学全体教师安全工作培训
- 北师大版数学八年级下册全册教案及反思
- 2024年五级咖啡师职业技能鉴定考试题库(含答案)
- 湖南版(湘教版)三年级美术下册全册全套课件(247张)
评论
0/150
提交评论