首页 > 解决方案 > 在 MPAndroid 折线图中显示数据

问题描述

我目前正在从蓝牙读取 7 个传感器的数据,并在图表中用 7 条线显示它们。我设法让应用程序正常工作,对于每个传入的数据,我实现了下面的 addEntry 函数来更新图表并沿 x 轴移动窗口以显示最新的数据。

但是,数据传输是 100Hz,应用程序会运行一个多小时,我发现应用程序在运行一段时间后,比如 20 分钟后,有时会卡住,有时可能无法处理。鉴于要处理的数据量很大,我想只在图表中保留 10-15 秒的数据(即即使我滚动回图表的开头,它也只会显示 10-15 秒的数据)。经过一番研究,我刚刚找到了 mChart.getData().notifyDataChanged();更新数据的方法,这不允许我只显示数组列表的选定部分。有什么建议吗?

提前致谢。

        private void addEntry(){
        Log.d(TAG, "add Entry called");
        LineDataSet[] sensorSet = new LineDataSet[7];;
        if (mChart.getData() != null && mChart.getData().getDataSetCount() > 0){

            for (int k = 0; k<7; k++) {
                sensorSet[k] = (LineDataSet) mChart.getData().getDataSetByIndex(k);
                sensorSet[k].setValues(SensorData.getSensor()[k]);
            }

            mChart.getData().notifyDataChanged();

            Log.d(TAG, "notified");
            mChart.notifyDataSetChanged();

            mChart.setVisibleXRange(0,5000);
            int temp = mChart.getData().getEntryCount();
            Log.d(TAG, "Entry count: " + mChart.getData().getEntryCount());
            mChart.moveViewToX(mChart.getLineData().getXMax()-1000);
        }else{
            for (int k = 0; k<7; k++) {
                sensorSet[k] = createSet(k);
            }
            LineData data = new LineData(sensorSet);
            mChart.setData(data);
        }
    }

标签: android-studiompandroidchart

解决方案


推荐阅读