編輯:高級開發
在android這一操作系統中對於數據的傳遞,實現的方法多樣化,大家可以根據自身的不同需求來選擇一個適合自己的方法來進行操作。在這裡我們就先為大家詳細介紹一下android數據傳遞的相關方法。
首先我們在android中用的最多的就是Activity之間的傳值
Activity之間的傳值
在Activity之間傳值,我們是通過Intent來完成的。這部分相信有點基礎的兄弟們都會知道我們是利用Intent的Extra部分來存儲我們想要傳遞的data的。舉例如下:
- Intent i = new Intent(this, YourClass.class);
- i.putExtra(YOURDATA, data);
- startActivity(i);
- Intent i = new Intent(this, YourClass.class);
- i.putExtra(YOURDATA, data);
- startActivity(i);
這裡需要注意的是putExtra method,它的第一個參數必須有package前綴,也就是說我們不能隨意指定一個String,而必須帶有package prefix,如例子中我們可以定義YOURDATA如下:
- public final static String YOURDATA =
"com.Javaeye.notfatboy.testArg";- ublic final static String YOURDATA =
"com.Javaeye.notfatboy.testArg";
而第二個參數可以是int, long, char等等很多種類型,具體見putExtra()
實際上Intent的使用范圍要廣泛的多,我們可以在任何使用Intent的地方來通過Extra進行傳值,推而廣之,我們也可以給Service傳值,給Broadcast Receiver傳值,而這也說明了另一個問題,即我們可以通過這種方式在不同的進程和線程之間進行傳值,因為Activity,Service,Broadcast這些Components可以在不同的進程或者線程之中,這也是android為我們提供的一個輕量級的進程,線程間通信的方式。
除此之外,Android還為我們提供了一些稍微復雜點的傳值機制,就Thread而言,我們可以通過Message Queue來實現android數據傳遞。
Messag Queue
Message Queue是個非常有用而且有趣的機制。假設我們有兩個Thread,一個是thread A,另一個是thread B。 thread A有一個Message Queue,並且對應一個Handler來處理Message,這是只要thread B獲取了該Handler的reference就可以給發送消息給Thread A。舉例如下:
- public class ThreadB extends Thread {
- ....
- public void run(){
- ...
- String str = "Test String";
- Message msg = mHandler.obtainMessage(1, str);
- mHandler.sendMessage(msg);
- ..
- }
- }
- public class ThreadB extends Thread {
- ....
- public void run(){
- ...
- String str = "Test String";
- Message msg = mHandler.obtainMessage(1, str);
- mHandler.sendMessage(msg);
- ..
- }
- }
當然Message Queue還有很多其他的使用方法,在這裡就不再一一贅述,有興趣的同學可以再仔細研究下,此處只做拋磚引玉。
對於IPC進程通信而言,android也提供了一個稍微復雜點的機制--- AIDL
AIDL
在android當中我們可以通過AIDL來定義特定的接口,從而實現RPC,而不再是簡單的傳值,關於這部分已經有很多文章介紹了詳細使用方法,不再贅述。
android數據傳遞的相關方法就為大家介紹到這裡。
移動開發風起雲湧,許多移動開發人員賺到了第一桶金,51CTO曾經報道過一篇對“月入40萬的iPhone中文應用程序開發者”的訪談,本文是一篇android開發者自曬收入
前不久我們為大家介紹過在MyEclipse 8.6上搭建android開發環境,本文為一篇外文翻譯,我們將介紹如何學習安裝 android NDK 並開始使用它。在這一
Google於2007年11月5日宣布發布android 手機,這款手機是基於Linux內核的一款操作系統,谷歌將繼續努力,讓這些服務變得更好,同時也將添加更有吸引力的
android平台的項目目前正在從手機運營商、手機廠商、開發者和消費者那裡獲得大力的支持,在這期間,很有可能會迎來 android程序的大爆發,畢竟這個系統太強大了。一