欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android Intent傳遞大量數(shù)據(jù)出現(xiàn)問題解決

 更新時(shí)間:2022年07月28日 14:40:20   作者:AnRFDev  
這篇文章主要為大家介紹了Android Intent傳遞大量數(shù)據(jù)出現(xiàn)問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

官方文檔 https://developer.android.google.cn/guide/components/activities/parcelables-and-bundles

在sendBroadcast,startActivity時(shí),我們會(huì)用到Intent。 Intent可以攜帶一些數(shù)據(jù),比如基本類型數(shù)據(jù)int、Boolean,或是String,或是序列化對(duì)象,Parcelable與Serializable。

異常TransactionTooLargeException

Intent傳遞數(shù)據(jù)時(shí),如果數(shù)據(jù)太大,可能會(huì)出現(xiàn)異常TransactionTooLargeException。

注意:

在 Android 7.0(API 級(jí)別 24)或更高版本中,系統(tǒng)會(huì)在運(yùn)行時(shí)拋出 TransactionTooLargeException 異常。在較低版本的 Android 中,系統(tǒng)僅在 logcat 中顯示警告。

TransactionTooLargeException繼承了RemoteException

package android.os;
public class TransactionTooLargeException extends RemoteException {
    public TransactionTooLargeException() {
        super();
    }
    public TransactionTooLargeException(String msg) {
        super(msg);
    }
}

追蹤到Binder,它的transactNative方法會(huì)報(bào)出RemoteException

public native boolean transactNative(int code, Parcel data, Parcel reply,
            int flags) throws RemoteException;

拋出異常與Binder有關(guān)。

通過 intent 發(fā)送數(shù)據(jù)時(shí),應(yīng)小心地將數(shù)據(jù)大小限制為幾 KB。發(fā)送過多數(shù)據(jù)會(huì)導(dǎo)致系統(tǒng)拋出 TransactionTooLargeException 異常。

Intent攜帶信息的大小受Binder限制

Intent攜帶信息的大小其實(shí)是受Binder限制。本文標(biāo)題也可以改為“Binder傳遞數(shù)據(jù)大小限制”。

數(shù)據(jù)以Parcel對(duì)象的形式存放在Binder傳遞緩存中。 如果數(shù)據(jù)或返回值比傳遞buffer大,則此次傳遞調(diào)用失敗并拋出TransactionTooLargeException異常。

Binder事務(wù)緩沖區(qū)有一個(gè)限定大小,通常是1Mb。由進(jìn)程中正在處理的所有事務(wù)共享緩存空間。

由于此限制是進(jìn)程級(jí)別而不是 Activity 級(jí)別的限制,因此這些事務(wù)包括應(yīng)用中的所有 binder 事務(wù),例如 onSaveInstanceState,startActivity 以及與系統(tǒng)的任何互動(dòng)。超過大小限制時(shí),將引發(fā) TransactionTooLargeException。

對(duì)于 savedInstanceState 的具體情況,應(yīng)將數(shù)據(jù)量保持在較小的規(guī)模,因?yàn)橹灰脩艨梢苑祷氐皆?Activity,系統(tǒng)進(jìn)程就需要保留所提供的數(shù)據(jù)(即使 Activity 的進(jìn)程已終止)。我們建議您將保存的狀態(tài)保持在 50k 數(shù)據(jù)以下。

為什么Binder要限制傳輸數(shù)據(jù)的大小

個(gè)人推測,作為一種IPC的方式,Binder并不是為傳輸大量數(shù)據(jù)而設(shè)計(jì)。

替代方案

當(dāng)需要傳遞長字符串、Bitmap等時(shí),不要考慮使用Intent傳遞數(shù)據(jù)的方案

1、單例

2、EventBus

3、Application

4、持久化數(shù)據(jù)

以上就是Android Intent傳遞大量數(shù)據(jù)出現(xiàn)問題解決的詳細(xì)內(nèi)容,更多關(guān)于Android Intent傳遞大量數(shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Android實(shí)現(xiàn)圖片隨手指旋轉(zhuǎn)功能

    Android實(shí)現(xiàn)圖片隨手指旋轉(zhuǎn)功能

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)圖片隨手指旋轉(zhuǎn)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 使用Android studio查看Kotlin的字節(jié)碼教程

    使用Android studio查看Kotlin的字節(jié)碼教程

    這篇文章主要介紹了使用Android studio查看Kotlin的字節(jié)碼教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Android TabLayout(選項(xiàng)卡布局)簡單用法實(shí)例分析

    Android TabLayout(選項(xiàng)卡布局)簡單用法實(shí)例分析

    這篇文章主要介紹了Android TabLayout(選項(xiàng)卡布局)簡單用法,結(jié)合實(shí)例形式簡單分析了Android選項(xiàng)卡布局的界面布局與功能實(shí)現(xiàn)具體相關(guān)技巧,需要的朋友可以參考下
    2016-01-01
  • Android利用ViewDragHelper輕松實(shí)現(xiàn)拼圖游戲的示例

    Android利用ViewDragHelper輕松實(shí)現(xiàn)拼圖游戲的示例

    本篇文章主要介紹了Android利用ViewDragHelper輕松實(shí)現(xiàn)拼圖游戲的示例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-11-11
  • Android zxing如何識(shí)別反轉(zhuǎn)二維碼詳解

    Android zxing如何識(shí)別反轉(zhuǎn)二維碼詳解

    這篇文章主要給大家介紹了關(guān)于Android zxing如何識(shí)別反轉(zhuǎn)二維碼的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • Android webview加載https鏈接錯(cuò)誤或無響應(yīng)的解決

    Android webview加載https鏈接錯(cuò)誤或無響應(yīng)的解決

    這篇文章主要介紹了Android webview加載https鏈接錯(cuò)誤或無響應(yīng)的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • android利用xml實(shí)現(xiàn)分割線

    android利用xml實(shí)現(xiàn)分割線

    這篇文章主要介紹了android利用xml實(shí)現(xiàn)分割線的方法,如何用xml產(chǎn)生一個(gè)分割線?感興趣的小伙伴們可以參考一下
    2015-12-12
  • Android 中的危險(xiǎn)權(quán)限詳細(xì)整理

    Android 中的危險(xiǎn)權(quán)限詳細(xì)整理

    這篇文章主要介紹了Android 中的危險(xiǎn)權(quán)限詳細(xì)整理的相關(guān)資料,Android 中有上百種權(quán)限,現(xiàn)在將所有的權(quán)限歸為兩類,一類是普通權(quán)限,一類的危險(xiǎn)權(quán)限,危險(xiǎn)權(quán)限則表示那些可能會(huì)觸及到用戶安全隱私或者對(duì)設(shè)備安全造成影響的權(quán)限,需要的朋友可以參考下
    2017-07-07
  • Kotlin類型系統(tǒng)竟如此簡單

    Kotlin類型系統(tǒng)竟如此簡單

    這篇文章主要給大家介紹了關(guān)于Kotlin類型系統(tǒng)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Kotlin具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • android中SharedPreferences實(shí)現(xiàn)存儲(chǔ)用戶名功能

    android中SharedPreferences實(shí)現(xiàn)存儲(chǔ)用戶名功能

    本篇文章主要介紹了android中SharedPreferences實(shí)現(xiàn)保存用戶名功能,詳細(xì)的介紹了SharedPreferences的功能,需要的朋友可以參考下
    2017-04-04

最新評(píng)論