在Activity間傳遞的數(shù)據(jù)一般比較簡單,可是有時分實踐開發(fā)中也會傳一些比較復雜的數(shù)據(jù),尤其是面試問道當遇到需求在Activity間傳遞很多的數(shù)據(jù)怎么辦?
Intent 傳遞數(shù)據(jù)的巨細是有約束的,它大約能傳的數(shù)據(jù)是1M-8K,原因是Binder鎖映射的內存巨細便是1M-8K.一般activity間傳遞數(shù)據(jù)會要運用到binder,因此這個就成為了數(shù)據(jù)傳遞的巨細的約束。那么當activity間要傳遞大數(shù)據(jù)選用什么方法呢?其實方法很多,咱們就舉幾個比方給咱們說明一下:
- 使用Intent傳遞數(shù)據(jù): Intent是在Android中用于在組件之間傳遞數(shù)據(jù)的機制。你可以將數(shù)據(jù)放入Intent的extras中,然后在目標Activity中從Intent中獲取這些數(shù)據(jù)。
- 使用Parcelable或Serializable: 如果需要在Intent中傳遞自定義對象,你可以讓這些對象實現(xiàn)Parcelable接口或Serializable接口,以便將它們序列化為字節(jié)流并傳遞給其他Activity。
- 使用全局單例: 你可以創(chuàng)建一個單例類來存儲需要在多個Activity之間共享的數(shù)據(jù)。
- 使用數(shù)據(jù)庫: 如果數(shù)據(jù)量較大且需要長時間存儲,可以考慮使用SQLite數(shù)據(jù)庫或其他持久化解決方案。
- 使用ViewModel和LiveData: Android架構組件中的ViewModel和LiveData可以幫助在Activity之間共享數(shù)據(jù),并且可以在屏幕旋轉等情況下保持數(shù)據(jù)的一致性。
- 使用文件存儲: 如果數(shù)據(jù)量非常大,可以將數(shù)據(jù)寫入文件,然后在另一個Activity中讀取。
- 使用網(wǎng)絡請求: 如果數(shù)據(jù)可以從服務器獲取,可以考慮使用網(wǎng)絡請求在Activity之間共享數(shù)據(jù)。
- 使用依賴注入: 通過依賴注入框架,你可以在多個Activity之間注入共享的數(shù)據(jù)實例,從而避免數(shù)據(jù)冗余和一致性問題。
本篇主要內容講一下第一種使用Intent傳遞數(shù)據(jù)。
使用Intent傳遞數(shù)據(jù)
什么是intent?
intent就是起到一個中間媒介的作用,可以在activity之間傳遞數(shù)據(jù),也可以進行進行一些基本的action。比如startactivity()之類。
利用intent在兩個activity之間傳遞數(shù)據(jù)
首先我們創(chuàng)建兩個activity,分別叫MainActivity以及OtherActivity。在MainActivity的布局文件中,添加一個button,用于頁面之間的轉跳,以及相關數(shù)據(jù)的傳輸。在OtherActivity的布局文件中,我們添加一個TextView,用于接受數(shù)據(jù)。
MainActivity中的代碼:
?
編輯切換為居中
添加圖片注釋,不超過 140 字(可選)
這些代碼,相信大家都很熟悉,應該不難。我們主要來說說putExtra();
putExtra(“A”,B)中,AB為鍵值對,第一個參數(shù)為鍵名,第二個參數(shù)為鍵對應的值。順便提一下,如果想取出Intent對象中的這些值,需要在你的另一個Activity中用getXXXXXExtra方法,注意需要使用對應類型的方法,參數(shù)為鍵名
貼出OtherActivity的代碼:
?
編輯切換為居中
添加圖片注釋,不超過 140 字(可選)
因為我們之前傳入的是一個字符串,所以調用getStringExtra這個方法。
這樣我們就簡單的在兩個activity之間傳遞數(shù)據(jù)啦~
利用intent在兩個activity之間傳遞數(shù)據(jù)包
傳遞數(shù)據(jù)包,我們主要使用bundle這個類。
首先看MainActivity中的代碼:
?
編輯切換為居中
添加圖片注釋,不超過 140 字(可選)
首先我們創(chuàng)建一個bundle類。當傳遞字符串時,使用putString方法;傳遞整數(shù)時,用putInt方法。 最后再用putExtras 將數(shù)據(jù)包傳遞到另一個activiity。
OtherActivity中的代碼:
?
編輯切換為居中
添加圖片注釋,不超過 140 字(可選)
首先我們創(chuàng)建一個bundle對象,接收MainActivity傳遞過來的數(shù)據(jù)。最后用setText方法,將其展現(xiàn)出來。這樣一個數(shù)據(jù)包就傳遞完成了。
利用intent獲取到返回數(shù)據(jù)
我們繼續(xù)創(chuàng)建兩個Activity,分別叫MainActivity和OtherActivity。但是這次不同的是,我們在MainActivity的xml文件中,創(chuàng)建一個按鈕和一個TextView,用于接收返回的數(shù)據(jù)。在OtherActivity的xml的文件中,我們創(chuàng)建一個EditText和一個button,用于返回數(shù)據(jù)。 (這兩個Xml文件的代碼,我也不不一一展示了)
OtherActivity的代碼:
都比較基礎,我們主要看setResult()這個方法。
它的第一個參數(shù)是一個返回碼,主要用于設置返回狀態(tài),你也可以自行進行定義。第二個參數(shù)是一個intent對象。
MainActivity的代碼:
關于Android開發(fā)中需要在Activity間傳遞大量的數(shù)據(jù),怎么去解決?其實有很多方法,上方也舉例了一個實際案例。更多有關Android開發(fā)技術可以參考[《Android核心技術手冊》]學習更多Android進階技巧。文章來源:http://www.zghlxwxcb.cn/news/detail-678244.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-678244.html
到了這里,關于需要在Activity間傳遞大量的數(shù)據(jù),能有哪些方法?的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!