2011-08-04 4 views
0

웹에서 이미지를로드 할 때 화면에 진행률 표시기를 표시하고 싶습니다. 아래 코드에서 사용됩니다.블랙 베리에서 프로그레시브 인디케이터가 움직이지 않음

Bitmap bitmap ; 
    BitmapField imageField ; 
    VerticalFieldManager vfm= new VerticalFieldManager(); 
    ProgressAnimationField spinner =new ProgressAnimationField(Bitmap.getBitmapResource("spinner2.png"));      
    vfm.add(spinner); 
    new Thread(new Runnable() 
    { 
     public void run() 
     { 
      bitmap = new UrlToImage(Constants.ICON_URL+"_big.png"+suffix).getImage();        
      imageField = new BitmapField(bitmap); 
      vfm.delete(spinner) 
      vfm.add(imagefield); 
     } 
    }).start(); 

실행하면 illegalStateException이 발생합니다. 다시 나는 ui thead로 바꾼다.,

Bitmap bitmap ;                           
    BitmapField imageField ; 
    VerticalFieldManager vfm = new VerticalFieldManager();                 
    ProgressAnimationField spinner =new ProgressAnimationField(Bitmap.getBitmapResource("spinner2.png"));       
    vfm.add(spinner); 
    UiApplication.getUiApplication().invokeLater(new Runnable() 
    { 
     public void run() 
     { 
      bitmap = new UrlToImage(Constants.ICON_URL+"_big.png"+suffix).getImage();          
      imageField = new BitmapField(bitmap); 
      vfm.delete(spinner) 
      vfm.add(imagefield); 

     } 
    }); 

오류 표시 없음. 그러나 progressanimationfield는 움직이지 않습니다. progressAnimatedField에 애니메이션을 적용하기 위해 내 코드에서 변경해야 할 사항. Pls 어떤 생각을주세요 ..

답변

3

나는 UI 스레드에서 UI 및 비 UI 작업을 모두 수행하려고하는 것이 문제라고 생각합니다. 따라서 UrlToImage은 네트워크에서 데이터를 검색하는 동안 UI 스레드 인질을 보유하고 있으며 다른 모든 UI 작업 (애니메이션 진행률 표시기를 다시 페인팅하는 것을 포함하여)을 방지합니다. 이런 일에 대해 무엇 :

Bitmap bitmap ;                           
BitmapField imageField ; 
VerticalFieldManager vfm = new VerticalFieldManager();                 
ProgressAnimationField spinner =new ProgressAnimationField(Bitmap.getBitmapResource("spinner2.png"));       
vfm.add(spinner); 
new Thread(new Runnable() 
{ 
    public void run() 
    { 
     bitmap = new UrlToImage(Constants.ICON_URL+"_big.png"+suffix).getImage();          
     imageField = new BitmapField(bitmap); 
     UiApplication.getUiApplication().invokeLater(new Runnable() 
      public void run() {    
       vfm.delete(spinner); 
       vfm.add(imagefield); 
      } 
     }); 
    } 
}); 
+0

안녕하세요. 친구 .. .. 정말 고마워요 ... 그 일은 ... – RVG

0
내가 대답으로이 이미 표시되어 알고

,하지만 난 당신이 here

그것은해야이 주제에 대한 내 게시물에 보일 것입니다 생각하는 모든 응용 프로그램 하트 비트 문제가 사라 .

+0

탁신 친구 .. 그 매우 도움 ..... – RVG

관련 문제