어플리케이션 패키지 내부에 서비스 클래스를 생성해서
백그라운드로 데이터를 받아온 후 같은 패키지 안의 CP에 넣어주려고 합니다.
일단 서비스에서 쓰레드 생성하고 그 안에서 데이터를 받고 CP에 넣어주는 모든 액션을 구현을 하였습니다.
그런데 기기에서 돌려보니 서비스에 구현된 처리들이 다 끝나고서야 자원이 메인 UI로 돌아오는것 같이 보이더군요.
그러니까... 서비스 내부에 넣어둔 데이터 다운 후 저장 명령이 모두 종료될때까지 메인 UI가 얼어있었단 말입니다...
서비스 안에 쓰레드를 구현해서 실행한건데... 이런 현상이 일어나니 이해가 되지 않아 질문드립니다.
아래는 대략적인 모습입니다.
/// 서비스 실행
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// TODO Put your code here
setContentView(R.layout.mainact);
startService(new Intent(BaseActivity.this,ReadingDaemon.class));
}
/// 서비스 클래스
public class ReadingDaemon extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
serviceStatus = true;
Thread t = new Thread(null,r,"NewsDaemon");
t.start();
return START_STICKY;
}
private Runnable r = new Runnable(){
Logger l = new Logger();
ReadingDaemon RD;
Handler me;
ArrayList<NewsContainer> NC= new ArrayList();
NewsContainer NCItems = new NewsContainer();
private ArrayList<NewsContainer> dummyGenerator(){
return NC;
}
@Override
public void run() {
// TODO Auto-generated method stub
// 이미지와 메타데이터를 다운로드 받아서 CP를 통해 저장함
}
}
}
코드는 몇몇 부분 삭제해서 중요하지 않으니 대강 골격만 봐주시기 바랍니다.
그럼 지도부탁드립니다.