一. Volley框架
在進行和服務器交互的時候需要發送請求,發現了volley這個好用易上手的框架。volley是一個異步網絡通信框架,它的優點在于輕量級、適用于量小但傳送頻繁的請求操作
搭建請求的第一步就是新建一個請求隊列RequestQueue queue = Volley.newRequestQueue(this)
在后續通信過程中,可以把每次的請求都加入到請求隊列中,一次發送,減少資源的浪費,通常一個活動一個請求隊列就夠了。
每發送一條http請求,就需要創建一個請求對象,volley提供了StringRequest
、JsonRequest
、ImageRequest
等針對不同格式請求的對象,完成請求的用法大同小異,都需要最基本的三步:
1. 創建一個RequestQueue對象
2. 創建一個request對象
3. 將request對象添加到RequestQueue隊列里去
以StringRequest為例,下面是它的基本結構StringRequest stringRequest = new StringRequest("http://www.baidu.com", new Response.Listener<String>() { @Override public void onResponse(String response) { Log.d("TAG", response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e("TAG", error.getMessage(), error); } });
但是在團隊項目中我們需要傳參數即要以post方式發送,并且約定發送和接收格式都是json,在嘗試用JsonRequest 的時候我還是遇到了一些問題:
1.新建JsonRequest對象的時候 需要實例化一個JSONObject對象然后作為參數傳進去,不能單純地將那個設為nullJSONObject jsonObject=new JSONObject(map); JsonObjectRequest jsonObjectRequest=new JsonObjectRequest(Request.Method.POST,"http://www.baidu.com", jsonObject, new Response.Listener<JSONObject>()
RequestQueue queue = Volley.newRequestQueue(this)
這個this指活動上下文,我在寫的時候寫成了getApplicationContext()
雖然驗證無誤但是后來發現這個指整個app的上下文,如果簡單粗暴地這么寫容易在后續創建多個請求隊列時發生錯誤,于是改成了login1Activity.this
當前活動的 上下文。- 加入隊列后突然發現不知道它是什么時候發送這些請求的,然后看了源碼,發現在創建請求隊列的方法里封裝了
start()
函數,在外面再次寫start()也可能會出現錯誤。 - 以json格式傳遞參數在這里顯得不是很友好,需要先將數據放入map對象,再將map對象轉為jsonObject對象(這里真是卡了好久...)
Map<String,String> map=new HashMap<String, String>(); //以json串方式提交參數 map.put("phonenum",myName); map.put("password",myPwd); JSONObject jsonObject=new JSONObject(map);
參考來源:
http://blog.csdn.net/guolin_blog/article/details/17482095
http://blog.csdn.net/nugongahou110/article/details/46876473
二. 關于Android Studio
額嗯,使用as的時候真是出現了無數的問題,開始很多都是因為gradle文件不同步導致的,解決過程中又因為很多時候的不仔細導致在上面耗了大量時間。
導入項目卡死的話,最大的原因就是gradle文件不一致,這時最好的辦法:***
條件不允許的話,可以到這個網站http://services.gradle.org/distributions/ 去下載對應的版本,然后放到如下的目錄C:\Users\用戶名\.gradle\wrapper\dists\gradle-2.10-all\a4w5fzrkeut1ox71xslb49gst
(a4w5fzrkeut1ox71xslb49gst這個文件夾名稱因人而異)
或者是將當前版本改為自己的gradle版本號
這里有個簡單粗暴的方法就是將自己本地的一個項目里的和gradle有關的文件都替換掉要打開項目 的gradle文件 再導入項目,導入后會有提示下載一些工具只要按提示來即可
還有一點是導入項目的時候要選擇build.gradle 打開,導入庫 的時候要選擇項目名稱打開,這一點雖然后來我在導項目的時候選擇名稱好像也沒什么問題。。。不太懂
安裝完as后我的c盤就有點緊臟,額昂這里可以配置一下android studio的緩存文件夾,這里貼個教程 http://blog.csdn.net/qiujuer/article/details/44160127