Android приложение - рисование более 100 динамических графиков одновременно

Мигрирую с windows приложения в android т.к. надоело таскать ноутбук, в общем - я не силён в разработке под java android, но кое как скрипя суставами набросал софт, перенёс пока процентов 15% от общего windows функционала, т.е. пока только графики и пару взаимодействий

Но уже проблема в том что это лагает сильно, пишу в 2023.1.1, использую lecho.lib.hellocharts.*, проц MediaTek Dimensity 8200

Лог от устройства обновляется 20гц, если вывести все графики - выглядит примерно на 5 fps и лагает сам телефон - весь, динамика графика (т.е. его движение) реализована путём удаления первой точки и добавления в конец новой, всего точек 32 на каждый график

Первый вопрос, каким инструментом можно вывести 100 и более графиков одновременно в динамике ?

Второй вопрос, не понял как выполнять post запросы на сервер, может есть у кого то пример или статья?

        private void pushPacket() {
        for (int chart = 0; chart < this.items.length; chart++) {
            if (entries[chart].size() > 32) {
                int index = 0;
                entries[chart].remove(entries[chart].get(0));

                for (PointValue item : entries[chart]) {
                    item.set(index++, item.getY());
                }
            }
            
            // ...
             
            Line line = new Line(entries[chart]).setColor(Color.parseColor("#d30303")).setCubic(true).setPointRadius(3);
            List<Line> lines = new ArrayList<>();
            lines.add(line);

            datasets[chart].setLines(lines);
            charts[chart].setLineChartData(datasets[chart]);

            List<PointValue>[] sorted = new List[64];
            sorted = entries;

            float min = 0xFFFF;
            float max = 0;
            for (PointValue item : sorted[chart]) {
                if (item.getY() < min) { min = item.getY(); }
                if (item.getY() > max) { max = item.getY(); }
            }

            final Viewport v = new Viewport(charts[chart].getMaximumViewport());
            v.top = (max > min ? max : (min + 1));
            v.bottom = min;
            charts[chart].setMaximumViewport(v);
            charts[chart].setCurrentViewport(v);
        }
    }

Ответы (0 шт):