Вызывает Android слишком большое исключение (посылка данных 2076400 байт) - PullRequest
0 голосов
/ 23 октября 2019

Попытка передать данные карты хеша с помощью дополнительных функций в другое действие приводит к слишком большой ошибке исключения транзакции (пакет данных 2076400 байт)

это код для передачи данных карты в другое действие, которое получает ошибку.

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();
    }
}

Как этого избежать и отправить эти данные другому занятию.

1 Ответ

0 голосов
/ 23 октября 2019

Существует ограничение на объем данных, которые вы можете отправлять с помощью намерений. Это 1 МБ. В идеале вам следует отправлять данные только по нескольким килобайтам с помощью намерений.

Размер ваших данных составляет около 2 МБ, что превышает это ограничение. Если вы намереваетесь передать столько данных, вы также можете сохранить их в базе данных или в хранилище данных памяти.

Буфер транзакций Binder имеет ограниченный фиксированный размер, в настоящее время 1 МБ, который является общимвсеми транзакциями в процессе для процесса. Поскольку этот лимит находится на уровне процесса, а не на уровне активности, эти транзакции включают в себя все транзакции связывания в приложении, такие как onSaveInstanceState, startActivity и любое взаимодействие с системой. При превышении предельного размера создается исключение TransactionTooLargeException.

https://developer.android.com/guide/components/activities/parcelables-and-bundles

...