异步任务的3个参数,可变长参数

  • Params是指调用execute()方法时传入的参数类型和doInBackgound()的参数类型
  • Progress是指更新进度时传递的参数类型,即publishProgress()和onProgressUpdate()的参数类型
  • Result是指doInBackground()的返回值类型,同时也是onPostExecute的入参类型
可变长参数: 底层就是一个数组,只能出现在方法的形参里,不能定义


1)可变长参数的方法只有在必须的时候才会调用,如果有确切匹配的不可变

参数的方法,会优先选择不可变参数的方法;

2)如果两个方法都是可变长参数,都能匹配时,会编译通不过;编译器不知道调用哪个;

3)一个方法只能有一个可变长参数,并且这个可变长参数必须是该方法的最后一个参数;

例子:

main 方法就是将若干个字符串封装成数组

String[] 与 String... 是一样的;不能重载;

依次拿到每个值,包装成数组,然后再用到方法里;
m1(String[] str) 
m2(String... str)

差别:但是如果写的是String[] 时,传参数时不能一起传多个;m1(str1,str2)

可以这样传:m1(new String[]{str1,str2});

而String... 则可以传多个参数;m2(str1,str2)

也可以这样传:m2(new String[]{str1,str2});




class HttpconTask extends AsyncTask<String,Void,String>{

    @Override
    protected String doInBackground(String... params) {
        String strJson = "";
        try {
            URL url = new URL(params[0]);
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();
            InputStream inputStream = conn.getInputStream();
            strJson = new String(getStringByte(inputStream));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return strJson;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        Log.d("zy",s);
    }

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }
}


String strUrl = "http://apis.juhe.cn/cook/query.php";
new HttpconTask().execute(strUrl);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值