public <T> void addToRequestQueue(Request<T> req, String tag) {
req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
getRequestQueue().add(req);
}
第二行做了什么?我无法理解这是什么(标签)?标签:标签。
这是完整的代码
{
import android.app.Application;
import android.text.TextUtils;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;
public class AppController extends Application {
public static final String TAG = AppController.class.getSimpleName();
private RequestQueue mRequestQueue;
private static AppController mInstance;
@Override
public void onCreate() {
super.onCreate();
mInstance = this;
}
public static synchronized AppController getInstance() {
return mInstance;
}
public RequestQueue getRequestQueue() {
if (mRequestQueue == null) {
mRequestQueue = Volley.newRequestQueue(getApplicationContext());
}
return mRequestQueue;
}
public <T> void addToRequestQueue(Request<T> req, String tag) {
req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
getRequestQueue().add(req);
}
public <T> void addToRequestQueue(Request<T> req) {
req.setTag(TAG);
getRequestQueue().add(req);
}
public void cancelPendingRequests(Object tag) {
if (mRequestQueue != null) {
mRequestQueue.cancelAll(tag);
}
}
}
这里是完整的代码现在告诉我,请解释一下你是否可以在那个方法第二行做了什么
答案 0 :(得分:0)
TAG
必须是String
类型的常量,表示tag的默认值,无论它是什么 - 如下所示:
public static final String TAG = "<default-tag>";
这里的想法是使用作为第二个参数传递的值标记您的请求,即String tag
。 Conditional operator ?:
用于在不使用if
/ else
语句的情况下实施检查。
如果在tag
的调用中传递的addToRequestQueue
字符串恰好为空,则该方法会使用TAG
的值。
答案 1 :(得分:0)
第二行的翻译
public static final String TAG = AppController.class.getSimpleName();
public <T> void addToRequestQueue(Request<T> req, String tag) {
req.setTag("is tag empty?" yes, so use `TAG` : no, so use `tag`);
getRequestQueue().add(req);
}
换句话说:
if(tag.isEmpty()){
res.setTag(TAG)
} else {
res.setTag(tag)
}