重新启动异步任务

时间:2012-12-13 06:25:21

标签: android android-asynctask

在我的Android应用程序中我使用asynctask使用achartengine绘制实时图表。我有两个按钮开始和停止。当我按下开始按钮并按下停止按钮时清除视图时,我希望图表开始加载。再次按下启动按钮,图表应该再次从启动开始。这是我的代码:

       mstart.setOnClickListener(new OnClickListener() {

         @Override
        public void onClick(View arg0) 
        {

             if(algo_done)
             {
                 layout_eeg1.addView(view_eeg1); 
                 layout_eeg2.addView(view_eeg2);
             }
             if (view_eeg1== null) 
             {                      
                view_eeg1= ChartFactory.getLineChartView(BluetoothConnect.this, eeg1, renderer_eeg1);                    
                layout_eeg1.addView(view_eeg1);
             } 
             else 
             {
                 view_eeg1.repaint();
             }
             if (view_eeg2== null)
             {
                view_eeg2= ChartFactory.getLineChartView(BluetoothConnect.this, eeg2, renderer_eeg2);            
                layout_eeg2.addView(view_eeg2);
             } 
             else
             {
                view_eeg2.repaint();
             }  


             if(fhr_alg!=null)
                    fhr_alg = null;

             fhr_alg = new AddStringTask();

             algo_done = false;

            Thread tt = new Thread()
            {
                public void run()
                {                       
                    try{
                        sleep(1000);                                
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }finally{

                        fhr_alg.execute();

                    }

                }
            };tt.start();

            // w1.loadUrl("javascript:callJS()");               
             mstart.setEnabled(false);


        }           
    });

mstop.setOnClickListener(new OnClickListener() {


         @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            //curr_instance.onDestroy();
            if(fhr_alg!=null)
            {
                fhr_alg.cancel(true);   
                algo_done = true;
//                  flag = false;
                    w2.stopLoading();
                    w2.clearAnimation();
                    w2.removeAllViews();
                    layout_eeg1.removeAllViews();
                    layout_eeg2.removeAllViews();

            }



            if (!mstart.isEnabled())
            {
                mstart.setEnabled(true);                    
            }           

        SaveData(data, id);                     

        }
    });

class AddStringTask extends android.os.AsyncTask<Void, Integer, Integer> {

        @Override
        protected void onPostExecute(Integer result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            algo_done=true;
            //Toast.makeText(Html.this, "Done Algo !", Toast.LENGTH_SHORT).show();
        }

        @SuppressLint("UseValueOf")
        @Override
        protected Integer doInBackground(Void... unused) {



                try {
                    for (int r = 0; r <= 5000; r++) {
                        if (!algo_done && !isCancelled()) {
                        publishProgress((int) r);
                        SystemClock.sleep(450);
                        }
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            return (0);

        }

        @Override
        protected void onProgressUpdate(Integer ... value) {    
        final int fhr=value[0];
        w2.loadUrl("javascript:count(\""+data[fhr]+"\")"); 

        series2.add(fhr,data[fhr]);
        Log.e(Integer.toString(fhr), Integer.toString(data[fhr]));
        double max2 = series2.getMaxX();    
        if(max2>900)
        {
            renderer_eeg2.setXAxisMax(max2);
            renderer_eeg2.setXAxisMin(max2-900);
        }
        else
        {
            renderer_eeg2.setXAxisMax(900);
            renderer_eeg2.setXAxisMin(0);
        }
        view_eeg2.repaint();
        series1.add(fhr*2,data[fhr]);
        double max1 = series1.getMaxX();            
        switch (k) {
        case 0:
        {           
            renderer_eeg1.setXAxisMax(max1);
            renderer_eeg1.setXAxisMin(0);
            view_eeg1.repaint();
            return;             
        }   
        case 1:
        {
            if(max1>300)
            {
                renderer_eeg1.setXAxisMax(max1);
                renderer_eeg1.setXAxisMin(max1-300);
            }
            else
            {
                renderer_eeg1.setXAxisMax(300);
                renderer_eeg1.setXAxisMin(0);
            }               
            view_eeg1.repaint();
            return;
        }
        case 2:
        {
            if(max1>900)
            {
                renderer_eeg1.setXAxisMax(max1);
                renderer_eeg1.setXAxisMin(max1-900);
            }
            else
            {
                renderer_eeg1.setXAxisMax(900);
                renderer_eeg1.setXAxisMin(0);
            }
            view_eeg1.repaint();
            return;
        }
        case 3:
        {
            if(max1>1800)
            {
                renderer_eeg1.setXAxisMax(max1);
                renderer_eeg1.setXAxisMin(max1-1800);
            }
            else
            {
                renderer_eeg1.setXAxisMax(1800);
                renderer_eeg1.setXAxisMin(0);
            }
            view_eeg1.repaint();
            return;
        }
        case 4:
        {
            if(max1>3600)
            {
                renderer_eeg1.setXAxisMax(max1);
                renderer_eeg1.setXAxisMin(max1-3600);
            }
            else
            {
                renderer_eeg1.setXAxisMax(3600);
                renderer_eeg1.setXAxisMin(0);
            }
            view_eeg1.repaint();
            return;
        }
        case 5:
        {
            if(max1>14400)
            {
                renderer_eeg1.setXAxisMax(max1);
                renderer_eeg1.setXAxisMin(max1-14400);
            }
            else
            {
                renderer_eeg1.setXAxisMax(14400);
                renderer_eeg1.setXAxisMin(0);
            }
            view_eeg1.repaint();
            return;
        }
        case 6:
        {
            if(max1>86400)
            {
                renderer_eeg1.setXAxisMax(max1);
                renderer_eeg1.setXAxisMin(max1-86400);
            }
            else
            {
                renderer_eeg1.setXAxisMax(86400);
                renderer_eeg1.setXAxisMin(0);
            }
            view_eeg1.repaint();
            return;
        }

    }       
            }
}

问题是当我再次按下开始按钮时,图表被加载,但它没有重新启动。它从最后一个位置开始。我希望它再次从0开始。

0 个答案:

没有答案