gpt4 book ai didi

java - 在 Activity 切换的情况下停止(线性)可运行的 "nice"方法是什么?

转载 作者:行者123 更新时间:2023-11-30 00:43:42 24 4
gpt4 key购买 nike

我有一个线程会做一些处理,然后有可运行的代码会在屏幕上显示结果。问题在于,如果用户在可运行对象位于两行显示代码之间时按下后退箭头,则下一行将崩溃,因为 Activity 不再存在。

下面的代码实现了目标,但我讨厌在每一行之前都有 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();
}

最佳答案

真正安全的方法是修改您的 Runnable,使其永远不会引用 Android 上下文(Activity 等)。

最简单的方法是通过事件总线将更改传达给 Activity。

关于java - 在 Activity 切换的情况下停止(线性)可运行的 "nice"方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42141197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com