다음 코드를 사용하여 하위 작업을 시작하는 주 활동이 있습니다.Android : 진행 대화 상자가 표시되지 않음
Intent intent = new Intent();
intent.setClassName(MyChildActivity.class.getPackage().getName(), MyChildActivity.class.getName());
((Activity)context).startActivity(intent);
자식 작업에서 시간이 많이 걸리는 작업을 수행하려고하는데 그렇게하는 동안 ProgressDialog를 표시하려고합니다. 내 코드는 다음과 같습니다.
private ProgressDialog _progressDialog;
private OnClickListener btn_onClick = new OnClickListener() {
public void onClick(View v) {
_progressDialog = ProgressDialog.show(
v.getContext(),
"Please wait",
"Performing task..."
);
TaskThread t = new ExportThread(v.getContext());
t.start();
}
};
private class TaskThread extends Thread{
private Context _context;
public TaskThread(Context context) {
_context = context;
}
private Handler _handler = new Handler() {
@Override
public void handleMessage(Message msg) {
_progressDialog.dismiss();
}
};
@Override
public void run() {
performTask(_context);
_handler.sendEmptyMessage(0);
}
}
어떤 이유로 ProgressDialog가 표시되지 않습니다. 주 활동에서 동일한 코드를 사용하면 작동하지만 하위 활동에서는 그렇지 않습니다. 또한 다음 코드는 ProgressDialog를 표시하지 못합니다 (그러나 토스트는 표시됩니다).
private ProgressDialog _progressDialog;
private OnClickListener _btn_onClick = new OnClickListener() {
public void onClick(View v) {
_progressDialog = ProgressDialog.show(
v.getContext(),
"Please wait",
"Performing task..."
);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
_progressDialog.dismiss();
Toast.makeText(v.getContext(), "Done with progress dialog.", Toast.LENGTH_SHORT).show();
}
};
거기에 어떤 아이디어가 있습니까? 하위 작업의 ProgressDialog를 표시 할 수 있습니까?
고맙습니다.
감사합니다, ArtWorkAD : 여기
몇 가지 예제 코드입니다. 왜 당신의 제안이 효과가 있었는지 모르지만 그랬습니다. Thread 접근법이 왜 AsyncTask 접근법이 작동하지 않는지 제게 설명해 주시겠습니까? 고맙습니다. – mahdaeng잘 작동하는 스레드입니까? UI에 액세스하고 업데이트하는 방법은 무엇입니까? 코드가 매우 복잡하고 기본 스레드 클래스를 사용하는 것을 볼 수 있듯이 응용 프로그램을 설정하고 실행하는 것은 어려운 작업입니다. 일반적으로 응용 프로그램에는 스레드가 많이 있습니다. 최대 40 개까지 가능합니다. 어떻게 구성해야합니까? 접근 방식을 사용하면 스레드를 관리하는 것이 거의 불가능합니다. async-task를 사용하려고하면, 많은 도움이됩니다! –
스레드 접근 방식에서는 모든 코드가 올바르게 실행됩니다. 작업이 수행됩니다. 그러나 ProgressDialog가 나타나지 않습니다. AsyncTask 방식을 사용하면 ProgressDialog가 나타납니다. 그것이 내가 이해하지 못하는 부분입니다. – mahdaeng