1
私はいくつかの処理を行うスレッドを持っていて、その結果を画面に表示する実行可能なコードを持っています。問題は、ランナブルが2行の表示コードの間にある間にユーザーが戻る矢印を押すと、アクティビティがなくなると次の行がクラッシュすることです。アクティビティスイッチの場合に、(リニア)実行可能ファイルを停止する「良い」方法は何ですか?
以下のコードは目標を達成していますが、各行の前にif
の文があることは嫌です。より良い方法がありますか?
@Override
public void onBackPressed() {
super.onBackPressed();
imgThread.interrupt();
}
private void processImage(){
final Handler mHandler = new Handler(Looper.getMainLooper());
progress = new ProgressDialog(this);
progress.setMessage("TEXT");
progress.setIndeterminate(true);
progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progress.show();
imgThread = new Thread(){
@Override
public void run() {
//Process the image a bit
mHandler.post(new Runnable() {
@Override
public void run() {
if(!imgThread.isInterrupted())
imageView.setImageBitmap(mDisplayBitmap);
if(!imgThread.isInterrupted())
progress.setMessage("TEXT TEXT");
if(!imgThread.isInterrupted())
progress.show();
}
});
//More processing
mHandler.post(new Runnable() {
@Override
public void run() {
if(!imgThread.isInterrupted())
addScreenListener();
if(!imgThread.isInterrupted())
determineHelpToast("TEXT TEXT TEXT", Toast.LENGTH_LONG);
if(!imgThread.isInterrupted())
progress.dismiss();
}
});
}
}; imgThread.start();
}