複数の操作を1回実行するスレッドがあり、ユーザーがをキャンセルしたときに停止したいと思いますProgressDialog
。
public void run() {
//operation 1
//operation 2
//operation 3
//operation 4
}
このスレッドは1回だけ実行されるため、スレッドがまだ実行されているかどうかを確認するループを実装できません。
これが私のProgressDialogです:
//Wait dialog
m_dlgWaiting = ProgressDialog.show(m_ctxContext,
m_ctxContext.getText(R.string.app_name),
m_ctxContext.getText(R.string.msg_dlg_analyse_pic),
true, //indeterminate
true,
new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
m_bRunning = false;
}
});
スレッドを停止する方法がわからないので、スレッドの操作をループでシーケンスして、スレッドがまだ実行されているかどうかを確認するのは正しいでしょうか、それとももっと良い方法がありますか?
public void run() {
int op = 0;
while(m_bRunning) {
switch(op) {
case 0 :
//operation 1
break;
case 1 :
//operation 2
break;
case 2 :
//operation 3
break;
case 3 :
//operation 4
break;
}
op++;
}
}
このソリューションを使用しても、スレッド内の操作が多すぎると、操作の順序付けが困難になる可能性があります。これを達成するためのより良い方法はありますか?