Как приостановить и запустить линейный график в реальном времени в GraphView, когда он работает?

Мне нужно сделать паузу и начать линейный график в середине во время работы. Я использую библиотеку GraphView. Мой линейный график показывает график правильно. Мне нужно реализовать паузу и начать с точки, где он остановился. Как это сделать?
Заранее спасибо..

Я добавил свой код ниже.

protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                    requestWindowFeature(Window.FEATURE_NO_TITLE);
                    setContentView(R.layout.fhrlistitemgraph);
                    String data = getIntent().getExtras().getString("data");
                    GraphView graph = (GraphView) findViewById(R.id.llgraphview);
                    series = new LineGraphSeries<DataPoint>();
                    graph.addSeries(series);

                    // customize a little bit viewport
                    Viewport viewport = graph.getViewport();
                    viewport.setYAxisBoundsManual(true);
                    viewport.setMinY(0);
                    viewport.setMaxY(200);
                    //viewport.setYAxisBoundsManual(true);
                    viewport.setScalable(true);
                    viewport.setScrollable(true);
            }
        @Override
                protected void onResume() {
                    super.onResume();
                    // we're going to simulate real time with thread that append data to the
                    // graph
                    new Thread(new Runnable() {

                        @Override
                        public void run() {
                            String value = null;
                            String[] data = data.replaceAll("\\[", "").replaceAll(" ", "").replaceAll("\\]", "").split(",");


                            // we add 100 new entries
                            for (int i = 0; i < data.length; i++) {
                                final int j;
                                j=i;
                                value = data[i];
                                final String values;
                                values = value;
                                runOnUiThread(new Runnable() {

                                    @Override
                                    public void run() {
                                        addEntry(j,values);
                                    }
                                });

                                // sleep to slow down the add of entries
                                try {
                                    Thread.sleep(600);
                                } catch (InterruptedException e) {
                                    // manage error ...
                                }
                            }
                        }
                    }).start();

                }
    private void addEntry(int i,String value) {
            // here, we choose to display max 10 points on the viewport and we
            // scroll to end
            series.appendData(new DataPoint(i, Integer.valueOf(value)), true, 5);
        }

person kiran guled    schedule 08.09.2015    source источник


Ответы (1)


Если вы остановите поток, вы остановите даже график, а когда вы перезапустите поток, график также перезапустится для отображения данных. Вы можете использовать кнопку в пользовательском интерфейсе, чтобы остановить поток.

В моем случае я вставил логическое значение, чтобы остановить обновление графика, потому что поток был не только этим, но и другими необходимыми вычислениями, когда значение истинно, график обновляется, когда значение ложно, график останавливается. Значение логического изменения при нажатии кнопки в пользовательском интерфейсе.

boolean updateGraph = true;
if(updateGraph=true){
    series.appendData(new DataPoint(countx++, usedramd), true, 60);
}

И с помощью кнопки вы меняете значение логического updateGraph.

person Paolo Mastrangelo    schedule 21.09.2015