2013-04-15 1 views
1

에도 불구하고 (회전하지 않음) 붙어. 탭을 전환 할 때 렌더링 속도가 매우 느리기 때문에 (3000/4000 값 시리즈가 있음) AsyncTask를 사용하여 그래프 생성을 백그라운드 스레드에 넣으려고했습니다.불확정 ProgressBar를 내가 조각 내부에 하나의 차트를 보여 각 탭에 <a href="http://androidplot.com/" rel="nofollow">androidplot</a> 라이브러리</p> <p>를 사용하여 (액션 바 탭을 사용하여) 내가 탭 레이아웃 여러 차트를 표시하는 응용 프로그램을 구축 AsyncTask를

제대로 작동하지만 불확실한 ProgressBar를 사용하면 표시기가 회전하지 않지만 여전히 남아 있습니다. 즉, UI 스레드를 차단하는 일부 프로세스가 있음을 알 수 있습니다. (내 생각 엔).

신청서를 개선하는 방법에 대한 의견이 있으십니까? 내가 대신 여전히 텍스트의 로딩 지표로 ProgressBar를 보여 싶습니다 여기

내가 해결 방법으로 대신하여 ProgressBar의 "... 계산"메시지를 사용하여 종료 된 AsyncTask를 코드입니다 :

private class AsyncPlotTask extends AsyncTask<XYPlot, Void, Boolean> { 

    @Override 
    protected void onPreExecute() { 

     //show loading message only 
     loading.setVisibility(View.VISIBLE); 
     dataContainer.setVisibility(View.GONE); 

    } 

    @Override 
    protected Boolean doInBackground(XYPlot... plot) { 

     boolean success = true; 

     plot[0].addSeries(dataSeries, dataSeriesFormat); 

     return success; 
    } 

    @Override 
    protected void onPostExecute(Boolean result) { 

     //hide loading message and show graph 
     loading.setVisibility(View.GONE); 
     dataContainer.setVisibility(View.VISIBLE); 

    } 
}//AsyncPlotTask 
은 거기에 각 조각의 또 다른 인스턴스가 정확히 활동을 중복 나는 활동에 ProgressBar 인스턴스를 가진 결국 완벽한 솔루션

하지 않고 그때 그냥 아웃을 페이드처럼

+0

당신이 UI 스레드가 아닌 다른 스레드에서 AsyncTask를 시작됩니다? –

답변

0

는 것 같습니다.

은 "붙어"효과는

+0

고마워, 나는 그것을 줄 것이다 – Mirko

1

지금 여기 무시할 수는 나에게 같은 소리 무엇 : 기본적으로

이 Androidplot이 수십 점을하지만, 대부분의 플롯에 대한 괜찮 렌더링의 주요 스레드를 사용 당신이 경험 한 것처럼 몇 천 포인트가 포함 된 플롯은 시간이 걸립니다. 메인 스레드가 UI를 업데이트하지 않는 플롯을 렌더링하는 동안 진행 막대를 업데이트하는 작업이 포함됩니다.

배경 모드를 사용하여 렌더링하도록 플롯을 설정하면 문제가 해결됩니다. 당신은 Androidplot 0.5.1 이상을 사용하는 당신은 당신의 음모의 XML이를 추가하여 스레드 렌더링 배경 가능하게 할 수 있다면 :

renderMode="use_background_thread" 

+0

고마워, 나는 그것을 줄 것이다 – Mirko