• 10-okHttp的同步与异步


    我的理解如下:

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

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

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

    /*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;
    		}
    	}
    

      

  • 相关阅读:
    文字有阴影效果
    asp.net(c#)将彩色图片变灰阶图片
    C#异步调用的方法
    PHP获取指定月份的第一天开始和最后一天结束的时间戳函数
    php 获取当前用户的IP
    网站前端性能优化
    grep命令的使用
    学C++的经验总结
    主键、唯一键与唯一索引的区别
    shell的比较运算符
  • 原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/10309497.html
Copyright © 2020-2023  润新知