안녕하세요, 여태 Thread 실행되는 타이밍 때매 고생하고 있네요.. ㅠㅠ
하다하다 안되서 질문 한번 올려봅니다.
우선 대충 코드를 설명드리면,
mainClass
{
....
onPreferenceTreeClick()
{
.....
if(btn is clicked)
{
threadFunc();
checkFunc();
......
}
}
checkFunc()
{
// check files
}
threadFunc()
{
// thread with handler
}
}
이런 식입니다..
참고로 checkFunc 은 한 15초 정도 걸리는 작업을 수행하는데,
그 동안 threadFunc 이용해서 ProgressDialog를 띄워주려고 해요..
그런데 문제는 ProgressDialog가 checkFunc 끝날 때 뜨는 AlertDialog 와 함께 뜬다는 겁니다.
그러니까 checkFunc 이 수행되는 15초 간은 아무 일도 일어나지 않는 거에요..
왜 threadFunc 이 바로 수행이 안되는 것일까요..
수행은 바로 되는데 뭔가 다른 문제가 있는 걸까요? ㅠㅠ
threadFunc만 아래 다시 올려볼게요.. 혹시 도움 주시는 데 도움이 될 지도 모르니까요..
감사합니다. 좋은 밤들 되세요..
private final void threadFunc()
{
final Handler handler = new Handler();
final Runnable showDlg = new Runnable() {
public void run() {
showDialogProgress(); // ProgressDialog 띄우는 함수
}
};
Thread toggleShowingThread = new Thread() {
@Override
public void run() {
handler.post(showDlg);
}
};
toggleShowingThread.start();
}
시간이 걸리는 작업을 별도의 스레드로 만들어야 합니다.
checkFunc() 내부의 작업을 스레드를 만들어 실행해보세요.