開發(fā)安卓APP關(guān)于Activity數(shù)據(jù)傳遞五種方式對比,深圳APP開發(fā)公司本文就制作Android平臺關(guān)于Activity數(shù)據(jù)傳遞五種實現(xiàn)方式的優(yōu)缺點對比,下面我們首先說說采用數(shù)據(jù)傳遞媒介實現(xiàn)方法。
1.通過Intent傳遞數(shù)據(jù)
直接傳遞——intent.putExtra(key,value)通過bundle——intent.putExtras(bundle)
這兩種方式都要求傳遞的對象必須可序列化(Parcelable或Serializable),且通過intent傳遞數(shù)據(jù)是有大小限制的,最好不要超過1M。
2.使用全局對象傳遞數(shù)據(jù)
在類中大量地使用靜態(tài)變量(尤其是使用很占資源的變量,如Bitmap對象)可能會導(dǎo)致內(nèi)存溢出,而且還可能因為靜態(tài)變量在很多類中出現(xiàn)而造成代碼難以維護和混亂的狀況。全局對象可以完全取代靜態(tài)變量。Android中的全局對象所對應(yīng)的類可以從android.app.Application繼承,如:publicclassMyAppextendsApplication{ publicStringname; publicDatadata=newData(); }在編寫完全局類之后,還需要在AndroidManifext.xml中注冊。
然后通過Activity.getApplicationContext()方法可以獲得全局對象。MyAppapp=(MyApp)getApplicationContext();app.name="abc";app.data.id ="100";由于某些原因(比如系統(tǒng)內(nèi)存不足),APP會被系統(tǒng)強制殺死,此時再次點擊進入應(yīng)用時,系統(tǒng)會直接進入被殺死前的那個界面,但此時APP的內(nèi)存已經(jīng)被釋放,數(shù)據(jù)為空,可能會出現(xiàn)異常,因此需要特別關(guān)注此種情況。
3.使用單例對象傳遞數(shù)據(jù)
示例代碼如下所示:publicclassMyApplication{ privateStringdata; privateMyApplication(){} publicstaticMyApplicationgetInstance(){ returnMyApplicationHolder.sInstance;
} privatestaticclassMyApplicationHolder{ privatestaticfinalMyApplicationsInstance=newMyApplication(); } publicStringgetData(){ returndata; } publicvoidsetData(Stringdata){ this.data=data; }}設(shè)置數(shù)據(jù):MyApplication.getInstance().setData(data);在Activity中獲取數(shù)據(jù):Stringdata=MyApplication.getInstance().getData();
4.使用靜態(tài)變量傳遞數(shù)據(jù)
(1)直接設(shè)置和獲取變量的值。如在MainActivity中定義變量。publicstaticStringName;在別的Activity中可以使用MainActivity.Name這種方式設(shè)置和獲取變量的值。
(2)通過接口方法設(shè)置和獲取變量的值。publicclassMyApplication{ privatestaticStringdata; publicstaticStringgetData(){ returndata; } publicstaticStringsetData(Stringdata){ this.data=data; }
}設(shè)置數(shù)據(jù):MyApplication.set(data);獲取數(shù)據(jù):MyApplication.get();
5.使用持久化方式傳遞數(shù)據(jù)
也就是使用Sqlite、SharePreference和File等傳遞數(shù)據(jù)。
(1)優(yōu)點應(yīng)用中所有地方都可以訪問。不會因為系統(tǒng)內(nèi)存不足而丟失數(shù)據(jù)。
(2)缺點
操作麻煩。效率低下。好了,APP開發(fā)公司本文關(guān)于“Activity數(shù)據(jù)傳遞五種方式以及優(yōu)缺點對比”的知識就分享到這里,謝謝關(guān)注,博納網(wǎng)絡(luò)編輯整理。