Volley是传参是使用Map键值对,对于请求频繁的app可以用Map池来代替new Map;
代码:
public class MapHelper {
private static MapHelper ourInstance = new MapHelper();
private Pools.SynchronizedPool<Map<String,String>> mapSynchronizedPool = new Pools.SynchronizedPool<>(10);
public static MapHelper getInstance() {
return ourInstance;
}
private MapHelper() {
}
public Map<String,String> getMap(){
Map<String,String> map = mapSynchronizedPool.acquire();
return map == null ? new ConcurrentHashMap<String, String>() : map;
}
public Map<String,String> getABMap(String a,String b) {
Map<String,String> map = getMap();
map.put("a",a);
map.put("b",b);
//拿出map时添加必传参数如versionCode
return map;
}
public void recycle(Map<String,String> map){
if (map != null){
map.clear();
try {
mapSynchronizedPool.release(map);
} catch (IllegalStateException ignored){}
}
}
public static class Builder {
private Map<String,String> params;
public Builder(){
params = MapHelper.getInstance().getMap();
}
public Builder(String a,String b){
params = MapHelper.getInstance().getACMap(a,b);
}
public Builder put(String key, String value){
params.put(key,value);
return this;
}
public Map<String,String> buildMap(){
return params;
}
}
}