我在网上发现了这个代码,有一部分我不明白.对于方法doInBackground,传递的参数是String... params.有人可以向我解释一下这意味着什么?那是什么...?
public class AsyncHttpPost extends AsyncTask<String, String, String> {
private HashMap<String, String> mData = null;// post data
/**
* constructor
*/
public AsyncHttpPost(HashMap<String, String> data) {
mData = data;
}
/**
* background
*/
@Override
protected String doInBackground(String... params) {
byte[] result = null;
String str = "";
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(params[0]);// in this case, params[0] is URL
try {
// set up post data
ArrayList<NameValuePair> nameValuePair = new ArrayList<NameValuePair>();
Iterator<String> it = mData.keySet().iterator();
while (it.hasNext()) {
String key = it.next();
nameValuePair.add(new BasicNameValuePair(key, mData.get(key)));
}
post.setEntity(new UrlEncodedFormEntity(nameValuePair, "UTF-8"));
HttpResponse response = client.execute(post);
StatusLine statusLine = response.getStatusLine();
if(statusLine.getStatusCode() == HttpURLConnection.HTTP_OK){
result = EntityUtils.toByteArray(response.getEntity());
str = new String(result, "UTF-8");
}
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
catch (Exception e) {
}
return str;
}
/**
* on getting result
*/
@Override
protected void onPostExecute(String result) {
// something...
}
}
Run Code Online (Sandbox Code Playgroud)
Bla*_*elt 19
三点留下来vargars.你可以像访问它一样访问它String[].
如果一个方法采用varargs作为参数,则可以使用vargars类型的多个值来调用它:
public void myMethod(String... values) {}
Run Code Online (Sandbox Code Playgroud)
你可以这样打电话 myMethod("a", "b");
在myMethod values[0]中等于"a"并且values[1]等于"b".如果你有一个带有多个args的方法,那么vargars参数必须是最后一个:例如:
public void myMethod(int first, double second, String... values) {}
Run Code Online (Sandbox Code Playgroud)
Rag*_*dan 11
doInBackground(String... params)
// params represents a vararg.
new AsyncHttpPost().execute(s1,s2,s3); // pass strings to doInbackground
params[0] is the first string
params[1] is the second string
params[2] is the third string
Run Code Online (Sandbox Code Playgroud)
http://developer.android.com/reference/android/os/AsyncTask.html#doInBackground(参数...)
异步任务的参数传递给 doInBackground
来自javadocs:
public static String format(String pattern,
Object... arguments);
Run Code Online (Sandbox Code Playgroud)
最后一个参数类型之后的三个句点表示最终参数可以作为数组或参数序列传递.Varargs只能在最终参数位置使用.
| 归档时间: |
|
| 查看次数: |
46214 次 |
| 最近记录: |