我的理解如下:

同步: 实时的在等待返回结果;

异步:可以不是同步执行的,放入到执行队列中。

所以建议:如果需要根绝请求的结构做些判断应当用 同步,异步可能由于时间先后出现问题。

/*post异步请求: postDataWithParame*/
private int ispower() { power = 0;
OkHttpClient client = new OkHttpClient();//创建OkHttpClient对象。
FormBody.Builder formBody = new FormBody.Builder();//创建表单请求体
formBody.add("username","ansen");//传递键值对参数
formBody.add("password","123"); //传递键值对参数
Request request = new Request.Builder()//创建Request 对象。
.url("http://172.25.1.234:8080/DormitoryHelper/user/login")
.post(formBody.build())//传递请求体
.build();
client.newCall(request).enqueue(new Callback() { //回调方法的使用与get异步请求相同。
@Override
public void onFailure(Call call, IOException e) {
rtdate = "请求失败";
} @Override
public void onResponse(Call call, Response response) throws IOException {
if(response.isSuccessful()){//回调的方法执行在子线程。
Log.d("kwwl","获取数据成功了");
Log.d("kwwl","response.code()=="+response.code());
String rt = response.body().string();
rtdate = rt;
Log.d("kwwl","response.body().string()==" + rt);
if(rt.equals("1")){
power = 1; //有权限
}
else{
power = Integer.valueOf(rt); //无权限
}
}
}
});
return power;
} /*post同步请求: postDataWithParame */
public void ispower_tongbu(){
new Thread(new Runnable() {
@Override
public void run() {
try {
OkHttpClient client = new OkHttpClient();//创建OkHttpClient对象
FormBody.Builder formBody = new FormBody.Builder();//创建表单请求体
formBody.add("username","ansen");//传递键值对参数
formBody.add("password","123"); //传递键值对参数 Request request = new Request.Builder()
.url("http://172.25.1.234:8080/DormitoryHelper/user/login")
.post(formBody.build())//传递请求体
.build();
Response response = null;
response = client.newCall(request).execute();//得到Response 对象
if (response.isSuccessful()) {
Log.d("kwwl","获取数据成功了");
Log.d("kwwl","response.code()=="+response.code());
String rt = response.body().string();
rtdate = rt;
Log.d("kwwl","response.body().string()==" + rt);
if(rt.equals("1")){
power = 1; //有权限
}
else{
power = 0; //无权限
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
} /*************提示框*******************/
private void showExitDialog1(String num){
// String rt = String.valueOf(num);
new AlertDialog.Builder(this)
.setTitle("提示")
.setMessage("您没有修改权限" + num)
.setPositiveButton("确定", null)
.show();
}
private void showExitDialog(){
new AlertDialog.Builder(this)
.setTitle("提示")
.setMessage("您没有修改权限")
.setPositiveButton("确定", null)
.show();
} @Override
public void onStopTrackingTouch(SeekBar seekBar) {
int x = 0;
switch (seekBar.getId()) {
case R.id.sb_data_uptime_h: ispower_tongbu();
if(power == 1){
sendCommand(KEY_UPTIME_H, (seekBar.getProgress() + UPTIME_H_OFFSET ) * UPTIME_H_RATIO + UPTIME_H_ADDITION);
}
else{
//没有权限
// showExitDialog1(String.valueOf(pr_data_uptime_h));
showExitDialog1(power+ "------power");
showExitDialog1(x + "-----x");
showExitDialog1(rtdate + "-----data");
showExitDialog();
tv_data_uptime_h.setText(String.valueOf(pr_data_uptime_h));
sb_data_uptime_h.setProgress(pr_data_uptime_h);
}
break;
case R.id.sb_data_uptime_m:
ispower_tongbu();
if(power == 1) {
sendCommand(KEY_UPTIME_M, (seekBar.getProgress() + UPTIME_M_OFFSET) * UPTIME_M_RATIO + UPTIME_M_ADDITION);
}
else{
//没有权限
// showExitDialog1(String.valueOf(pr_data_uptime_m));
showExitDialog();
tv_data_uptime_m.setText(String.valueOf(pr_data_uptime_m));
sb_data_uptime_m.setProgress(pr_data_uptime_m);
}
break;
default:
break;
}
}

  

10-okHttp的同步与异步的更多相关文章

  1. .NET Core采用的全新配置系统[10]: 配置的同步机制是如何实现的?

    配置的同步涉及到两个方面:第一,对原始的配置文件实施监控并在其发生变化之后从新加载配置:第二,配置重新加载之后及时通知应用程序进而使后者能够使用最新的配置.要了解配置同步机制的实现原理,先得从认识一个 ...

  2. ASP.NET WebAPi(selfhost)之文件同步或异步上传

    前言 前面我们讲过利用AngularJs上传到WebAPi中进行处理,同时我们在MVC系列中讲过文件上传,本文结合MVC+WebAPi来进行文件的同步或者异步上传,顺便回顾下css和js,MVC作为客 ...

  3. socket阻塞与非阻塞,同步与异步、I/O模型,select与poll、epoll比较

    1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步/异步主要针对C端: 同步:      所谓同步,就 ...

  4. WCF的同步和异步(以WPF连接为例)

    2016-06-0711:05:44 在学习WCF时,学到WCF服务的同步和异步. 我理解的同步是: 当WCF服务是同步执行时,程序只有一条线程,代码只能按顺序一步一步来执行,当执行客户端/服务端某方 ...

  5. socket阻塞与非阻塞,同步与异步

    socket阻塞与非阻塞,同步与异步 作者:huangguisu 转自:http://blog.csdn.net/hguisu/article/details/7453390 1. 概念理解 在进行网 ...

  6. Python番外之 阻塞非阻塞,同步与异步,i/o模型

    1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步/异步主要针对C端: 同步:      所谓同步,就 ...

  7. 阻塞与非阻塞、同步与异步 I/O模型

    I/O模型 Linux 下的五种I/O模型 阻塞I/O(blocking I/O) 非阻塞I/O (nonblocking I/O) I/O复用(select 和poll) (I/O multiple ...

  8. js的事件循环机制:同步与异步任务(setTimeout,setInterval)宏任务,微任务(Promise,process.nextTick)

    javascript是单线程,一切javascript版的"多线程"都是用单线程模拟出来的,通过事件循环(event loop)实现的异步. javascript事件循环 事件循环 ...

  9. js回调函数以及同步与异步

    1. 背景介绍javascript的单线程特性由于javascript语言是一门“单线程”的语言,所以,javascript就像一条流水线,仅仅是一条流水线而已,要么加工,要么包装,不能同时进行多个任 ...

  10. C#中委托的同步和异步有什么区别

    通过定义委托,来实现同步和异步,委托通过Action和Func来实现,记录学习委托的同步和异步的过程 委托的同步方法 委托的Invoke方法用来进行同步调用. static void Main(str ...

随机推荐

  1. 谈USB重定向的方式

    在桌面虚拟化的项目中,常常会遇到用户提出的各自外设需求,这时产品对外设的兼容性就成为了项目成败的拦路虎 本文试图用通俗易懂的语言讲讲USB外设重定向的工作流程,先看看普通PC上USB设备的工作流程 u ...

  2. mysql 字符串数字转换

    1 方法一:SELECT CAST('123' AS SIGNED); 2 方法二:SELECT CONVERT('123',SIGNED); 3 方法三:select '123'+1

  3. ElasticSearch centos7 安装

    参考: https://blog.csdn.net/u014180504/article/details/78733827 https://blog.csdn.net/youzhouliu/artic ...

  4. The value for the useBean class attribute xxx is invalid

    JSP页面报这个错可能的原因: 1:指定的 Bean 类没找到 2:该类不是 public 的,或者找到的 class 文件是 interface 或抽象类 3:Bean 类中没有 public 的无 ...

  5. Python调用外部系统命令

    利用Python调用外部系统命令的方法可以提高编码效率.调用外部系统命令完成后可以通过获取命令执行返回结果码.执行的输出结果进行进一步的处理.本文主要描述Python常见的调用外部系统命令的方法,包括 ...

  6. 记Dagger2使用过程中的一个BUG--compileGoogleDebugJavaWithJavac

    项目编译可以通过,不过没有生成Dagger2的类,导致无法运行项目.. 错误提示 Error:(14, 41) 错误: 找不到符号 符号: 类 DaggerAppComponent 位置: 程序包 c ...

  7. week06 07 创建RPC SERVER 换个镜像安装下载

    RPC server 使用python类库 https://pypi.org/project/python-jsonrpc/ 和NPM 不一样 他没有global选项 他安装的就是全局的安装的类库叫p ...

  8. C#导出Excel,某单元格内容长度超过255 的解决方法

    public static void ToExcel(DataTable dtSource, string strPath, string strSheetName) { System.Data.Ol ...

  9. QuickSand图片点击后分裂成几份消失效果《IT蓝豹》

    QuickSand图片点击后分裂成几份消失效果 QuickSand图片点击后分裂成几份消失效果,适合做图片退出和剪切效果.同时也可以学习android动画. demo中都封装好几个功能类,主要动画实现 ...

  10. yum源制作

    CentOS7 同步远程镜像 搭建本地yum服务器同步CentOS镜像站点的数据到本地服务器,使用nginx实现http服务向局域网内的其他机器提供yum服务,解决内网yum安装软件的问题. 一.前提 ...