android數據交互方式(整理)


 

不同模塊傳遞數據(不同activity

利用intent對象

 

簡單數據:

設置參數:

 

 

接收參數:

 

 

 

 

 

復雜數據:

 

 

 

接收參數:

 

 

 

 

 

實現serializable接口

 

利用Java語言本身的特性,通過將數據序列化后,再將其傳遞出去。

 

 

 

后台接收:

 

 

 

實現Parcelable接口方式

 

這個是通過實現Parcelable接口,把要傳的數據打包在里面,然后在接收端自己分解出來。這個是Android獨有的,在其本身的源碼中也用得很多,

 

因為其本質也是序列化數據,所以這里要注意定義順序要與解析順序要一致

 

 

 

 

設置參數:

 

 

接收

 

 

 

 

通過單例模式:

單例模式的特點就是可以保證系統中一個類有且只有一個實例。實現線程安全

定義一個單例類。

 

 

 

設置參數:

 

 

 

接收參數:

 

 

 

 

 

Ui線程和子線程交互方式。

 

1、Handler

handlerandroid中專門用來在線程之間傳遞信息類的工具。

 

方法:

假設A線程要傳遞信息給B線程,我們需要做的就是

1、在B線程中調用Looper.prepareLooper.loop。(主線程不需要)

2、 編寫Handler類,重寫其中的handleMessage方法。

3、創建Handler類的實例,並綁定looper

4、調用handlersentMessage方法發送消息。

2Activity.runOnUIThread(Runnable)

使用方法:

 1、編寫后台線程,這回你可以直接調用UI控件

2、創建后台線程的實例

3、調用UI線程對應的ActivityrunOnUIThread方法,將后台線程實例作為參數傳入其中。

注意:無需調用后台線程的start方法

 

3、View.Post(Runnable)

使用方法:

1、編寫后台線程,這回你可以直接調用UI控件,但是該UI控件只能是View

2、創建后台線程的實例

3、調用UI控件Viewpost方法,將后台線程實例作為參數傳入其中。

4View.PostDelayed(Runnabe,long)

同上:只不過加上等待多長時間后再運行后台進程。

5AsyncTask

AsyncTask是一個專門用來處理后台進程與UI線程的工具。通過AsyncTask,我們可以非常方便的進行后台線程和UI線程之間的交流。

 

AsyncTask擁有3個重要參數

1Params

2Progress

3Result

 

Params是后台線程所需的參數。在后台線程進行作業的時候,他需要外界為其提供必要的參數,就好像是一個用於下載圖片的后台進程,他需要的參數就是圖片的下載地址。

Progress是后台線程處理作業的進度。依舊上面的例子說,就是下載圖片這個任務完成了多少,是20%還是60%。這個數字是由Progress提供。

Result是后台線程運行的結果,也就是需要提交給UI線程的信息。按照上面的例子來說,就是下載完成的圖片。

 

AsyncTask擁有4個重要的回調方法。

1onPreExecute

2doInBackground

3onProgressUpdate

4onPostExecute

 

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、最后調用AsyncTaskexecute方法,傳入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

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM