android异常过大引起(数据包2076400字节)
Caused by android too large exception (data parcel 2076400 bytes)
尝试使用 intent extras 将哈希映射数据传递给另一个 activity 给出事务过大异常错误。(数据包 2076400 字节)
这是将地图数据传递给另一个收到错误的 activity 的代码。
if {
mCountDownTimer = new CountDownTimer(2000, 1000) {
public void onTick(long millisUntilFinished) {}
public void onFinish() {
Intent intent = new Intent(Main2Activity.this,
ShowImagesActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("hashMap", map);
startActivity(intent);
if(Splash.Getproduct ==null) {
if (mInterstitialAd.isLoaded())
mInterstitialAd.show();
}.start();
}
}
如何避免这种情况并将此数据发送到另一个 activity。
您可以通过 Intent 发送的数据量是有限制的。
它是 1 MB。理想情况下,您应该只通过意图发送几 KB 的数据。
您的数据大小约为 2 MB,超出了此限制。
如果您打算传递这么多数据,您也可以将其保存在数据库或内存数据存储中。
Binder 事务缓冲区有固定大小限制,目前为 1MB,由进程的所有正在进行的事务共享。由于此限制是在进程级别而不是每个 activity 级别,因此这些事务包括应用程序中的所有活页夹事务,例如 onSaveInstanceState、startActivity 以及与系统的任何交互。当超过大小限制时,将抛出 TransactionTooLargeException。
https://developer.android.com/guide/components/activities/parcelables-and-bundles
尝试使用 intent extras 将哈希映射数据传递给另一个 activity 给出事务过大异常错误。(数据包 2076400 字节)
这是将地图数据传递给另一个收到错误的 activity 的代码。
if {
mCountDownTimer = new CountDownTimer(2000, 1000) {
public void onTick(long millisUntilFinished) {}
public void onFinish() {
Intent intent = new Intent(Main2Activity.this,
ShowImagesActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("hashMap", map);
startActivity(intent);
if(Splash.Getproduct ==null) {
if (mInterstitialAd.isLoaded())
mInterstitialAd.show();
}.start();
}
}
如何避免这种情况并将此数据发送到另一个 activity。
您可以通过 Intent 发送的数据量是有限制的。 它是 1 MB。理想情况下,您应该只通过意图发送几 KB 的数据。
您的数据大小约为 2 MB,超出了此限制。 如果您打算传递这么多数据,您也可以将其保存在数据库或内存数据存储中。
Binder 事务缓冲区有固定大小限制,目前为 1MB,由进程的所有正在进行的事务共享。由于此限制是在进程级别而不是每个 activity 级别,因此这些事务包括应用程序中的所有活页夹事务,例如 onSaveInstanceState、startActivity 以及与系统的任何交互。当超过大小限制时,将抛出 TransactionTooLargeException。
https://developer.android.com/guide/components/activities/parcelables-and-bundles