不同模塊傳遞數據(不同activity)
利用intent對象
簡單數據:
設置參數:
接收參數:
復雜數據:
接收參數:
實現serializable接口
利用Java語言本身的特性,通過將數據序列化后,再將其傳遞出去。
后台接收:
實現Parcelable接口方式
這個是通過實現Parcelable接口,把要傳的數據打包在里面,然后在接收端自己分解出來。這個是Android獨有的,在其本身的源碼中也用得很多,
因為其本質也是序列化數據,所以這里要注意定義順序要與解析順序要一致
設置參數:
接收
通過單例模式:
單例模式的特點就是可以保證系統中一個類有且只有一個實例。實現線程安全
定義一個單例類。
設置參數:
接收參數:
Ui線程和子線程交互方式。
1、Handler
handler是android中專門用來在線程之間傳遞信息類的工具。
方法:
假設A線程要傳遞信息給B線程,我們需要做的就是
1、在B線程中調用Looper.prepare和Looper.loop。(主線程不需要)
2、 編寫Handler類,重寫其中的handleMessage方法。
3、創建Handler類的實例,並綁定looper
4、調用handler的sentMessage方法發送消息。
2、Activity.runOnUIThread(Runnable)
使用方法:
1、編寫后台線程,這回你可以直接調用UI控件
2、創建后台線程的實例
3、調用UI線程對應的Activity的runOnUIThread方法,將后台線程實例作為參數傳入其中。
注意:無需調用后台線程的start方法
3、View.Post(Runnable)
使用方法:
1、編寫后台線程,這回你可以直接調用UI控件,但是該UI控件只能是View
2、創建后台線程的實例
3、調用UI控件View的post方法,將后台線程實例作為參數傳入其中。
4、View.PostDelayed(Runnabe,long)
同上:只不過加上等待多長時間后再運行后台進程。
5、AsyncTask
AsyncTask是一個專門用來處理后台進程與UI線程的工具。通過AsyncTask,我們可以非常方便的進行后台線程和UI線程之間的交流。
AsyncTask擁有3個重要參數
1、Params
2、Progress
3、Result
Params是后台線程所需的參數。在后台線程進行作業的時候,他需要外界為其提供必要的參數,就好像是一個用於下載圖片的后台進程,他需要的參數就是圖片的下載地址。
Progress是后台線程處理作業的進度。依舊上面的例子說,就是下載圖片這個任務完成了多少,是20%還是60%。這個數字是由Progress提供。
Result是后台線程運行的結果,也就是需要提交給UI線程的信息。按照上面的例子來說,就是下載完成的圖片。
AsyncTask擁有4個重要的回調方法。
1、onPreExecute
2、doInBackground
3、onProgressUpdate
4、onPostExecute
onPreExecute運行在UI線程,主要目的是為后台線程的運行做准備。當他運行完成后,他會調用doInBackground方法。
doInBackground運行在后台線程,他用來負責運行任務。他擁有參數Params,並且返回Result。在后台線程的運行當中,為了能夠更新作業完成的進度,需要在doInbackground方法中調用PublishProgress方法。該方法擁有參數Progress。通過該方法可以更新Progress的數據。然后當調用完PublishProgress方法,他會調用onProgressUpdate方法用於更新進度。
onProgressUpdate運行在UI線程,主要目的是用來更新UI線程中顯示進度的UI控件。他擁有Progress參數。在doInBackground中調用PublishProgress之后,就會自動調onProgressUpdate方法
onPostExecute運行在UI線程,當doInBackground方法運行完后,他會調用onPostExecute方法,並傳入Result。在onPostExecute方法中,就可以將Result更新到UI控件上。
使用方法:
1、編寫一個繼承AsyncTask的類,並聲明3個參數的類型,編寫4個回調方法的內容。
2、然后在UI線程中創建該類(必須在UI線程中創建)。
3、最后調用AsyncTask的execute方法,傳入Parmas參數(同樣必須在UI線程中調用)。
另外值得注意的2點就是,千萬不要直接調用那四個回調方法。還有就是一個AsyncTask實例只能執行一次,否則就出錯。
示例:
Android客戶端到服務器交互方法
(TCP): scoket
服務器監聽。
優點:1.傳輸數據為字節級,傳輸數據可自定義,數據量小。相應的移動端開發,手機費用低
2.傳輸數據時間短,性能高
3.適合C/S之間信息實時交互
4.可以加密,數據安全性高
缺點: 1.需要對傳輸的數據進行解析,轉化為應用級的數據
2.對開發人員的開發水平要求高
3.相對於Http協議傳輸,增加了開發量
http:
優點:1.基於應用級的接口使用方便
2.要求的開發水平不高,容錯性強
缺點: 1.傳輸速度慢,數據包大。
2.如實現實時交互,服務器性能壓力大
3.數據傳輸安全性差
同springMVC數據交互方式相同。Andriod就相當於一個前端頁面。
參考地址:http://blog.csdn.net/android_hdh/article/details/52192991
http://www.cnblogs.com/zhawj159753/p/3949956.html
http://www.2cto.com/kf/201402/278147.html
http://www.cnblogs.com/X-knight/p/5406362.html
*****http://www.2cto.com/kf/201501/370468.html