凌空中是否有像AsyncTask
一样的方法?
我在我的应用程序中使用了volley lib,我希望在凌空中执行一些预执行。那么在volley lib ad中有任何方法,如AsyncTask
中的方法,因为我想用Base64图像字符串创建json,当我要用图像创建json时,我的应用程序停止响应。
protected void onPreExecute() {
pDialog = ProgressDialog.show(MyActivity.this,"Please wait...", "Retrieving data ...", true);
}
protected Void doInBackground(Void... unused) {
items = parser.getItems();
for (Item it : items) {
publishProgress(it);
}
return(null);
}
protected void onProgressUpdate(Item... item) {
adapter.add(item[0]);
}
protected void onPostExecute(Void unused) {
pDialog.dismiss();
}
由于
答案 0 :(得分:1)
您可以将ProgressDialog添加到布局中,然后在响应时将其可见性更改为View.GONE
。
布局的一个例子:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
...
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
</RelativeLayout>
使用volley
库的示例:
JsonObjectRequest jsObjRequest = new JsonObjectRequest
(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// add your logic here
progressBar.setVisibility(View.GONE);
// set you progressBar variable using findViewById method
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// TODO Auto-generated method stub
}
});
// Access the RequestQueue through your singleton class.
VolleySingleton.getInstance(getActivity()).addToRequestQueue(jsObjRequest);
答案 1 :(得分:0)
Volley Library没有像onPreExecute这样的方法。
您可以在调用Volley中的查询请求之前初始化变量。
这是一个简单的例子,这段代码取自Volley lib附带的示例:
//Here you'll initialize variables like showing dialog etc.
RequestQueue queue = Volley.newRequestQueue(this);
String url = "https://ajax.googleapis.com/ajax/services/search/images?" +
"v=1.0&q=dog&rsz=8";
JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// TODO Auto-generated method stub
Log.d("Response", response.toString());
//Here you'll dismiss dialog :)
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// TODO Auto-generated method stub
}
});
queue.add(jsObjRequest);
}