2015-09-08 4 views
1

Мне нужно приостановить и начать линейный график посередине во время работы. Я пользуюсь 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); 
     } 

ответ

0

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

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

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

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