首页 > 解决方案 > java.lang.RuntimeException:android.os.TransactionTooLargeException:data parcel size 670028 bytes

问题描述

我正在运行一个前台服务,在该服务中我使用传感器来检测步骤。当设备感应到一个步骤并更新我的 UI 时,我正在使用本地广播接收器。一切正常,但几个小时后,我的应用程序在后台崩溃,即使我在用户离开应用程序时取消注册我的广播接收器并在用户再次重新打开应用程序时启用它,并通过从正在运行的服务中获取值来更新我的 UI。这是我遇到此崩溃的方法。此方法为我服务

@Override
    public void step(long timeNs) {

            numSteps++;
            getDistance();
            if (numSteps % 36 == 0) {

                calorie_count++;
            }

            // Toast.makeText(this, "Step Increased", Toast.LENGTH_SHORT).show();
            contentView.setTextViewText(R.id.stepTxt, "" + numSteps);

            dis = new DecimalFormat("##.##").format(total_distance);
            contentView.setTextViewText(R.id.distanceTxt, "" + dis);
            contentView.setTextViewText(R.id.calorieTxt, "" + calorie_count);

            mNotificationManager.notify(4, notification);

            steps = String.valueOf(numSteps);

            if(stopBrdCsr!=0)
            {
                sendBroadcastMessage(steps); 
            }


        }

下面是我在服务中的接收器,它接收值并广播它以更新 UI。

        if (numSteps != null) {


                String dis = new DecimalFormat("##.##").format(total_distance);

                Intent intent = new Intent(ACTION_LOCATION_BROADCAST);
                intent.putExtra("Steps", numSteps);
                intent.putExtra("Meter", String.valueOf(meters));
                intent.putExtra("Distance", dis);
                intent.putExtra("Calorie", String.valueOf(calorie_count));
              
                LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

        }
    }

标签: javaandroidexceptiontransactiontoolargeexception

解决方案


推荐阅读