导入ok依赖: implementation 'com.squareup.okhttp3:okhttp:3.12.0'
get异步:
①创建OKhttpclient对象 new OkHttpClient.Builder().build();
②构建请求对象 new Request.Builder().get().url(url).build();
③获取call对象 okHttpClient.newCall(request);
④call执行请求 call.enqueue(new Callback() {}
post异步:
①创建OKhttpclient 对象new OkHttpClient.Builder().build();
②创建请求体 new FormBody.Builder().add("stage_id", "1").build();
③构建请求对象 new Request.Builder().url(url+from).post(body).build();
④获取call对象 okHttpClient.newCall(request);
⑤call执行请求 call.enqueue(new Callback() {}
请求体
①string:RequestBody.create(type,"");
②stream:new RequestBody()
③form:FormBody.builder().build();
④file
请求头、缓存、超时
请求头:reques.header() request.addHeader()
缓存:okHttpClient.cacha(new Cache(file,time))
超时:ok.timeout()
二、Retrofit
依赖 implementation 'com.squareup.retrofit2:retrofit:2.5.0'
retrofit使用步骤
①创建接口服务类:baseURL和方法
②创建retrofit对象 new Retrofit.Builder().baseUrl"("ApiService.baseUrl").build();
③通过retrofit对象获取接口服务对象 retrofit.create(ApiService.class);
④接口服务对象调用自己的方法 apiService.get();
⑤通过call执行请求 call.enqueue(new Callback() {}
三、GreenDao
1:在project (build.gradle)版本号后
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
——同步
2.在Module (build.gradle)第二行添加
apply plugin: 'org.greenrobot.greendao' // apply plugin 步骤3
——同步
3.在Module (build.gradle)'proguard-rules.pro'两个大括号后添加
greendao {
//数据库版本号,升级时修改
schemaVersion 1
//生成的DAO,DaoMaster和DaoSession的包路径。默认与表实体所在的包路径相同
daoPackage 'com.example.dao.db'
//生成源文件的路径。默认源文件目录是在build目录中的(build/generated/source/greendao)
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
——同步
4.在Module (build.gradle)添加依赖
// //greenDAO配置 步骤4
implementation 'org.greenrobot:greendao:3.2.2' // add library
implementation 'org.greenrobot:greendao-generator:3.2.2'
——同步
5.创建Bean
添加注释@Entity @Id
编译 得到 @Generated(hash = 1644894640) @Generated(hash = 1438189893) 随机
四.数据库
1.GreenDao三步走一样
2.判断是否有值
privatebooleanisHased(SqlBean sqlBean){List<SqlBean>list=sqlBeanDao.queryBuilder().where(SqlBeanDao.Properties.Title.eq(sqlBean.getTitle())).list();if(list.size()>0){returntrue;}else{returnfalse;}}
3.新的增删改查
publiclonginsert(SqlBean sqlBean){if(!isHased(sqlBean)){longl=sqlBeanDao.insertOrReplace(sqlBean);returnl;}else{return-1;}}publicbooleandelete(SqlBean sqlBean){if(isHased(sqlBean)){sqlBeanDao.delete(sqlBean);returntrue;}else{returnfalse;}}publicList<SqlBean>query(){List<SqlBean>list=sqlBeanDao.queryBuilder().list();returnlist;}publicbooleanupdate(SqlBean sqlBean){if(isHased(sqlBean)){sqlBeanDao.update(sqlBean);returntrue;}else{returnfalse;}}
4.懒加载
publicvoidsetUserVisibleHint(booleanisVisibleToUser){super.setUserVisibleHint(isVisibleToUser);if(isVisibleToUser){initData();}else{if(lists!=null&&lists.size()>0){lists.clear();}}}
5.在适配器里可以写一个方法,fragment直接调方法即可
publicvoidupdataData(List<SqlBean>data){lists.clear();if(data!=null){lists.addAll(data);}notifyDataSetChanged();}