나는 약간 구속력이 있습니다. 나는 그 값을 업데이트하는 진행 대화 상자가있는 응용 프로그램을 작성 중입니다. 나는 하나를 만드는 방법에 대한이 튜토리얼을 다음되었고,이 코드로 결국 지금Android - 스레드 실행 완료시기 결정
progress = new ProgressDialog(this);
progress.setMessage("Scanning for Devices");
progress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progress.setIndeterminate(true);
progress.setProgress(0);
progress.show();
final int totalProgressTime = 100;
final Thread t = new Thread() {
@Override
public void run() {
int jumpTime = 0;
BTAdapter.startDiscovery();
while(jumpTime < totalProgressTime) {
try {
sleep(250);
jumpTime += 5;
progress.setProgress(jumpTime);
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
t.start();
그러나, 진행 100 안타의 while()
루프 더 이상 실행하고 지금은 아주 프로그래밍 방식의 경우 알 수 없다 진행이 완료되었는지 여부. 코드와 마찬가지로 스레드는 진행률이 100이 될 때까지 실행됩니다. postExecute
함수가있는 비동기 작업과 달리 스레드는 자체를 중지하고 재정의 또는 청취자에게 알려주는 함수가없는 것 같습니다 실행 완료.
누군가 스레드가 작업 실행을 중단했거나 작업 완료시 외부 함수를 호출하는 방법을 아는 사람이 있습니까?
while
루프를 수행 한 후 onExecuteAfter
함수를 호출하여 UI 스레드를 업데이트하려고했지만 쓸모가 없었습니다.
모든 도움을 주시면 대단히 감사하겠습니다.
* 스레드가 멈추는 기능이없는 것 같습니다. * : 실행이 끝날 때 실행이 끝납니다. * 작업이 끝나면 외부 함수를 호출하십시오. * 그런 것은 없습니다. 당신은 스스로 구현해야합니다. – Blackbelt
ui가 아닌 스레드에서 ui에 대한 코드를 실행하려면 activity.runOnUiThread()를 사용하십시오. – Ramin
Rxjava가 요청에 부딪 힐 수 있습니다. – Harlan