java.lang.RuntimeException:android.os.TransactionTooLargeException:数据包大小 670028 字节

发布时间:2021-03-08 15:37

我正在运行一个前台服务,我在其中使用传感器来检测步数。当设备检测到步骤并更新我的用户界面时,我正在使用本地广播接收器。一切正常,但几个小时后,我的应用程序在后台崩溃,即使我在用户离开应用程序时取消注册我的广播接收器,并在用户再次重新打开应用程序时启用它,并通过从正在运行的服务中获取值来更新我的 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);

        }
    }
回答1
transactiontoolargeexception 相关推荐