E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 1571892),当出现这个报错的时候很可能是因为在向A->B传递数据时由于intent的安全限制,如果数据量过大会报错。解决方法有很多种可以压缩传递,借用操作类等等。
我现在用到的是操作类去完成数据在不同活动间的传递:
object DataHolder {
private val bigData :MutableMap<String,Any> = mutableMapOf()
fun putData(data:Any,tag :String=""):String{
val key=tag
bigData[key]=data
return key
}
@Suppress("UNCHECKED_CAST")
fun <T> getData(key :String?) :T?{
if (key==null)return null
val data= bigData[key]
bigData.remove(key)
return data as? T
}
}
传递数据用
putData(data,tag)
接收数据
getData<T>(tag)
这里需要注意的是调用一次getData后类会把数据清除,所以如果不继续添加数据,而是直接二次调用getData 那么会返回null