用于大型数据集的Android GraphView内存使用情况

时间:2016-01-12 18:17:33

标签: java android arrays bluetooth-lowenergy android-graphview

我在Android上相对较新(为我的技能水平提供背景信息)。

摘要(问题在底部说明):我的应用程序使用了大量的CPU(听起来很基本,对不起),我认为这是因为我使用了3000个数据点。

上下文:我正在制作一个从蓝牙LE服务中获取字节的应用

    private void broadcastUpdate(final String action,final BluetoothGattCharacteristic characteristic) {
    final Intent intent = new Intent(action);

    // For all other profiles, writes the data formatted in HEX.
    final byte[] data = characteristic.getValue();
    Log.i(TAG, "data"+characteristic.getValue());

    if (data != null && data.length > 0) {
        final StringBuilder stringBuilder = new StringBuilder(data.length);
        for(byte byteChar : data)
            stringBuilder.append(String.format("%02X ", byteChar));
        Log.d(TAG, String.format("%s", new String(data)));
        // getting cut off when longer, need to push on new line, 0A
        intent.putExtra(EXTRA_DATA,String.format("%s", new String(data)));
    }
    sendBroadcast(intent);
}

在另一项活动中,我使用数据点将数据附加到图表中。 (displayData只显示我进入文本视图的数据)。

     else if (BluetoothLeService.ACTION_DATA_AVAILABLE.equals(action)) {
            //cnt starts at 0

            String data = intent.getStringExtra(mBluetoothLeService.EXTRA_DATA);
            double y = Double.parseDouble(data); //create type:double version of data

            if(cnt == 3000) { //if graph maxes out regenerate new data
                cnt = 0; //set the count back to zero
                clearUI(); //clear textView that displays string version
                series.resetData(new DataPoint[] {new DataPoint(cnt + 1, y)});
            }
            else //if there is no need to reset the map
            {
                series.appendData(new DataPoint(cnt + 1, y), false, 3000); //append that data to the series
            }
            displayData(data, y); //display cnt, data(string), and y(double)
            cnt++;
        }

使用串口测试仪,发送号码" 12.5"每隔60ms,绘图过程就可以正常工作,直到我达到大约300个数据点。之后,应用程序变得迟钝。 Logcat表示正在跳过30-34帧。通过3000个数据点,Logcat声明正在跳过62-74帧。

问题:如何更好地构建数据和/或使应用运行更顺畅?

0 个答案:

没有答案