2011-10-16 4 views
0

Activity를 확장하는 클래스가 있고 그 안에 이미지를로드하기 위해 View를 확장하는 개인용 클래스가 있습니다. 그러나 AsyncTask, Handler 또는 백그라운드에서 이미지로드를 수행하고로드하는 동안 progressBar를 동시에 표시하는 다른 방법을 사용해야하는지 여부가 아닙니다. AsyncTask의 경우 UI 스레딩에 작업 인스턴스를 만들어야합니다 (Activity 클래스에 있다고 가정). 그러나 모든 함수는 View 클래스에 있으며 AsyncTask 사용에 문제가 있습니다. 핸들러를 사용하는 것이 좋은 선택입니까?안드로이드에서 멀티 스레딩을 사용하여 이미지를로드하는 중

public class LargeImageScroller extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
      setContentView(new SampleView(this)); 
    } 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) {...} 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) {...} 

    private static class SampleView extends View { 

     public SampleView(Context context) {...} 
     public boolean onTouchEvent(MotionEvent event) {...} 
     protected void onDraw(Canvas canvas) {...} 
     private boolean createMap(Context context) {...} 
} 

이것은 프로그램의 대략적인 해골입니다. createMap()은 이미지를 캔버스에로드하여 이미지를 표시하는 함수입니다. 하지만 AsyncTask를 확장하는 클래스를 선언하면 작업 인스턴스는 onCreate()에서만 만들 수 있고 다른 곳에서는 만들 수 없으므로 createMap()을 호출하여 이미지를로드하는 데 문제가 발생합니다. Handler를 사용하여 주 스레드와 별도의 스레드에 이미지를로드 할 생각이었습니다. 아무도 나에게 일을하는 더 좋은 방법이 있다고 말할 수 있습니까?

답변

관련 문제