2011-11-16 3 views
0

개체 목록을 저장할 클래스가 있으며 커서를 통해 데이터베이스에서이 목록을 채 웁니다. 개체를 인스턴스화 할 때 발생합니다. 별도의 스레드에서 목록을 채우고 목록에 채워지면 클래스에 플래그를 설정하려고합니다. 핸들러를 사용해야합니까, 아니면 UI 스레드에만 해당합니까?비 활동 클래스의 Android 스레드

감사합니다, m

이 나를 위해 작동하는 것 같다

:

public void pop(){ 
    mReadyToSearch = false; 
    new Thread() { 
     public void run() { final Long startTime = System.currentTimeMillis(); 
          Log.i(TAG, "Start Pop"); 

          populateAnimalListFromCursor(); 
          mReadyToSearch = true; 

          final Long endTime = System.currentTimeMillis() - startTime; 
          Log.i(TAG, "End Pop : "+ Long.valueOf(endTime) +"ms"); 

          } 
     }.start(); 
} 

조금 간단 보이지만 목록을로드하고 난 순간에 필요한 모든 인 클래스의 상태를 설정 . 누구든지이 문제를 볼 수 있습니까? 당신이 어딘가에 UI 스레드에에서 개체를 인스턴스화하는 경우

감사합니다, m은

+0

죄송합니다. 명확하지 않습니다. 목록은 ListView가 아니라 단지 객체 목록입니다. 클래스는 UI에 아무 것도 표시하는 데 사용되지 않으며 사용자 입력 기준과 비교하여 목록의 항목 채점에만 사용됩니다. – mAndroid

+0

AsyncTask의 doInBackground() 메소드에서 객체 목록에 항목을 저장하는 것과 같은 모든 작업자 작업을 수행합니다. 따라서 UI 및 모든 복잡한 작업이 백그라운드에서 실행되지 않습니다. – user370305

답변

0

의 인스턴스화가 또한 UI 스레드에서 실행됩니다.

로딩을 수행하기 위해 개체의 내부 클래스로 AsyncTask (또는 UI 구성 요소를 업데이트 할 필요가없는 경우 Runnable)을 추가하는 것이 좋습니다. 이렇게하면 비 UI 스레드.

관련 문제