Android:7.0以上机型intent传递Bundle数据太大,退到后台报TransactionTooLargeException

http://www.bejson.com/convert/filesize/

 

看logcat报的字节大小,如果为了精确计算可用上面的网址转换一下,如果bundle传递的数据过大超过了1MB,那么就会报这个异常,因为系统底层进行了传输限制,同样的数据传递在6.0的机型就一切正常不发生崩溃。

解决方案:

1. bundle intent的传递数据,用Gson转入转出,如果能减小到不发生crash,那么这个方案最好(如果数据是复杂的list,转入转出用如下代码) 

转入:

 Gson().toJson(要传的list)

转出:

Gson().fromJson(
            preferences.memberListByAnswerString,
            object : TypeToken>() {}.type
        )

 

2.  舍弃bundle intent的传递,用share preference保存和读取需要传递的数据。(如果数据是复杂的list,转入转出亦用如上代码)

 

3. 让两个传递数据的画面共用同一个ViewModel。

 

 

 

 

你可能感兴趣的:(android,kotlin)