android傳遞對象
1. Android Intent傳遞對象為什麼要序列化,序列化有那幾種方式
我們都知道進行android 開發的時候,跳轉到Activity和Fragment的時候,傳遞對象是通過Intent或者bundle 進行傳遞。當這個對象沒有實現序列化的時候 當你通過Inetnt傳遞的時候會報紅,系統會提示你將這個對象實現序列化。
1.先了解一下 什麼是序列化。通過對《Android 開發藝術探索》可以知道序列化是將一個對象轉化成可存儲可傳輸的狀態,序列化後的對象可以在網路上傳輸,也可以存儲到本地。
2.回到我們的主題,那為什麼要序列化呢?<大致有三個原因>
a.永久性保存對象,保存對象的位元組序列到本地文件中
b.對象可以在網路中傳輸
c.對象可以在IPC之間傳遞
3.序列化有那幾種方式呢<有兩種方式>
android自定義對象可序列化有兩個選擇一個是Serializable和Parcelable
4.它們之間有什麼區別?
a.在使用內存的時候Parcelable比Serializable的性能高。
b.Serializable在序列化的時候會產生大量的臨時變數,從而引起頻繁的GC(內存回收)。
c.Parcelable不能使用在將對象存儲在磁碟上這種情況,因為在外界的變化下Parcelable不能很好的保證數據的持續性。
d.實現Serializable很簡單 因為Serializable是一個空介面 所以只要在在實體類中實現這個介面即可 Parcelable就稍微復雜了一點了
這里有實現Parcelable 這個介面的列子 blog.csdn.net/jaycee110905/article/details/21517853
2. android怎麼才能傳遞多個參數和對象
activity之間傳遞參數你可以
ntent intent = new Intent();
intent.setClass(this, DetailActivity.class);
intent.putExtra("human", human);
intent.putExtra("method", method);
.....
有更多參數都可中圓以在這里put
startActivity(intent);
在相應的activity里可以弊彎這樣取傳過租培悶來的參數
getIntent().getExtras().getSerializable("human");
.......
3. 如何在不同的android應用之間傳遞數據
一個Android程序可以由多個Activity和Servier組成,在這些程序組件之間傳遞數據的方法有以下幾種,每種方法都有其特定的使用途徑。 1、原始數據類型: 在Activity/Servier之間傳遞臨時性的原始數據,可以使用Intent的putExtras方法來傳遞數據。若傳遞的數據需要長久保存,則使用SharedPreference類來完成。 2、傳遞對象。 當在Activity/Servier之間傳遞不需要長久保存的對象時,可以使用以下幾種途徑: (1)通過Application類,每個Android應用程序都有一個Application類。當你在程序的AndroidManifest.xml中給Application設定一個名字時,你的程序中就必須有一個Application的子類。這個Application子類會被Android自動實例化,並且是一個全家性的類,它的生命周期和程序的生命周期相同,你可以把一些全局性的對象保存在Application類中。Application類可以通過getApplication()獲得。 (2 通過HashMap of WeakReferences傳遞對象。當一個Activity需要向另外一個Activity傳遞對象時,可以使用一個關鍵字把對象存在一個HashMap中,並把這個關鍵字通過Internt的Extras發給目標Activity,目標Activity接到該關鍵字後使用該關鍵字把對象沖HashMap中取出。
4. android 序列化傳遞對象是同一個對象嗎
putSerializable,是通過對象的序列化和反序列化來實現Activity之間對象的傳遞的,所以這種方法得到的就是兩個完全不一樣的對象(Activity2中的對象obj就相當於new了一個新對象,然後將Activity1中的對象obj的值都賦給了它,所以可以說它們的內容是一樣的,但是對象不一樣.). 注:通過上述方法傳遞的對象obj一定要實現Serializable介面才可以哦! 一般在Activity之間是不做對象的傳遞的吧,序列化和反序列化本身就沒有一定的弊端吧(個人感覺),呵呵...而且對象都要實現Serializable介面. 如果一定要傳對象的話可以在做一些靜態的類或對象! 希望對你有幫助 ^_^!