編輯:關於android開發
雖然Volley已經提供了對於String,圖片,JSON,Request的解析,但是總會有些數據不屬於以上三種的,這時候就需要我們來自己實現的一個Request來解析我們需要的數據。
實現一個自定義的Request很簡單:
1. 繼承Request
2. 實現parseNetworkResponse()和deliverResponse()方法。
@Override protected ResponseparseNetworkResponse( NetworkResponse response) { try { String json = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); return Response.success(gson.fromJson(json, clazz), HttpHeaderParser.parseCacheHeaders(response)); } // handle errors ... }
parseNetworkResponse()的參數NetworkResponse,這個參數中包含了HTTP的狀態碼,response的header等數據。我們重寫這個函數時,返回的Response
Volley是在一個新線程裡調用parseNetworkResponse,防止主線程堵塞。
protected void deliverResponse(T response) { listener.onResponse(response);
public class GsonRequestextends Request { private final Gson gson = new Gson(); private final Class clazz; private final Map headers; private final Listener listener; /** * Make a GET request and return a parsed object from JSON. * * @param url URL of the request to make * @param clazz Relevant class object, for Gson's reflection * @param headers Map of request headers */ public GsonRequest(String url, Class clazz, Map headers, Listener listener, ErrorListener errorListener) { super(Method.GET, url, errorListener); this.clazz = clazz; this.headers = headers; this.listener = listener; } @Override public Map getHeaders() throws AuthFailureError { return headers != null ? headers : super.getHeaders(); } @Override protected void deliverResponse(T response) { listener.onResponse(response); } @Override protected Response parseNetworkResponse(NetworkResponse response) { try { String json = new String( response.data, HttpHeaderParser.parseCharset(response.headers)); return Response.success( gson.fromJson(json, clazz), HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } catch (JsonSyntaxException e) { return Response.error(new ParseError(e)); } } }
ILJMALL project過程中遇到Fragment嵌套問題:IllegalArgumentException: Binary XML file line #23:
Android Studio 優秀插件(二): Parcelable Code Generator,androidparcelableAndroid Studio 優秀插
FFmpeg使用手冊 - FFmpeg 的編譯安裝FFMpeg在官方網站中提供了已經編譯好的可執行文件,用FFmpeg的人很多,因為FFmpeg是開源的,並且可以自己DI
本文介紹MediaPlayer的使用。MediaPlayer可以播放音頻和視頻,另外也可以通過Vi