close
本周日文停課,所以日本人cosplay只好停刊一周了。周末不忘Android之今天的筆記mm...很硬。現在的反射動作是玩一個APP會試圖去想他是如何構成的,比如說從AlertDialog, Login時候, Menu想到GridView之類的,也會想說奇怪了怎麼人家的GridView Menu可以每一格都不同展示樣,是要怎樣寫? position對position去塞xml? 總之就是挺有意思的。

開始進到網路連線,探討APP怎麼連到資料庫去讀取資料,這其中就包含了好幾種觀念:

1. 連到-->用URL方法+Connection連線
2. 資料庫(網站)-->InoutStream
3. 讀取資料-->InputStream+轉型語法變成BufferedReader來讀
4. 網路連線不允許在主畫面做,必須在非同步的情況下做,所以要利用AsyncTask

老師在一個小時講完(還剩一點收尾)上述四個觀念,可想而知,我簡直快要頂不住了。
今天按部就班來:


1. 連到-->用URL方法+Connection連線
新增一個連線URL的時候,產生錯誤是因為設定上要求連線如果不成功,該有意外處理方式,但是系統設定好try catch可以用。



呼叫connection才會連線。
//設定URL連去設定好的網頁資料庫
URL url = new URL("http://j.snpy.org/atm/login?userid="+userid+"&pw="+pw);
//呼叫connection才會連線
HttpURLConnection conn=(HttpURLConnection)url.openConnection();

因為Android原始設定不允許連上網,所以要去Manifest把網路連線功能新增進來。(非常重要)


2. 資料庫(網站)-->InoutStream
//conn連線之後得到輸入資料流InputStream
InputStream is=conn.getInputStream();
int n=is.read(); Log.d("LOGIN", n+"");

3. 讀取資料-->InputStream+轉型語法變成BufferedReader來讀
//再用reader來讀資料,用轉換器轉換成inputsreamreader,因為buffer reader可以讀char比一個一個byte讀快 (下一篇再來談資料IO型態)
BufferedReader in=new BufferedReader(new InputStreamReader(is));
//用readLine讀一行資料
String data=in.readLine();


4. 網路連線不允許在主畫面做,必須在非同步的情況下做,所以要利用AsyncTask
AsyncTask是開一個讀利運作的空間,把需要獨立作業的工作丟進去,


但因為是匿名類別,會要求多implement對應的方法(Add unimplemented methods)



接下來就可以把要處理的網路連線任務放進去。


最後結果


都是非常重要的觀念,很驚人在一個小時之內都講完了,真的是要自己實做才知道結果如何。
arrow
arrow
    全站熱搜

    brianc18 發表在 痞客邦 留言(0) 人氣()