单击后退按钮时,如何删除活动分配的所有资源



我有两个活动MainActivity和SecondActivity。MainActivity有一个按钮,当我点击它时,我会转到SecondActivity,在这个活动中,我在一个单独的线程中进行一些数学计算(进行此计算所需的代码非常大,有100个类(,计算完成后,我会在Textview中显示结果。当用户点击后退按钮时,它会返回到MainActivity,直到现在一切都很好,但当我在android studio中分析代码时,我发现计算函数的许多类都被保留了,例如静态变量、枚举等。所以为了解决这个问题,我试图删除一些静态变量,通过这种方法,我减少了保留的代码量,但我不能再继续了。有没有解决这个问题的方法,所以当我点击后退按钮时,SecondActivity(计算功能(分配的所有资源都应该被删除。

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
Button button = findViewById(R.id.button);
button.setOnClickListener(v -> {
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
});
}
}
public class SecondActivity extends AppCompatActivity {
private final Handler mHandler = new Handler(Looper.getMainLooper());
private TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
mTextView = findViewById(R.id.textview);
Thread thread = new Thread(() -> {
String result = calculate();
displayResult(result);
});
thread.start();
}
String calculate(){
//pure java code
//Very complex math operation with 100 of classes
return "result";
}
public void displayResult(String result){
mHandler.post(() -> {
mTextView.setText(result);
});
}
}

我没有尝试,但我认为这会奏效。

@Override
public void onBackPressed(){
Intent intent = new Intent(this, FirstActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | 
Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent);
SecondActivity.this.finish(); // if the activity running has it's own context
}

最新更新