Java 调用Activity.finish总是在后堆栈上重新创建上一个活动

Java 调用Activity.finish总是在后堆栈上重新创建上一个活动,java,android,android-activity,Java,Android,Android Activity,在我的活动的一个http请求回调方法中,我执行以下操作: public void dataReceivedSuccessfully(String data) { Form[] forms = getFormsFromJson(data); final FormListAdapter adapter = new FormListAdapter(forms, this); runOnUiThread(new Runnable() { @Override

在我的活动的一个http请求回调方法中,我执行以下操作:

public void dataReceivedSuccessfully(String data) {
    Form[] forms = getFormsFromJson(data);
    final FormListAdapter adapter = new FormListAdapter(forms, this);

    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            gvForms.setAdapter(adapter);
            pbForms.setVisibility(View.INVISIBLE);
            gvForms.setVisibility(View.VISIBLE); // <-- this is the issue

            finish(); // <-- this causes previous activity to recreate itself
            new Timer().schedule(() -> { finish(); }, 1000); // <-- this works!
            new Timer().schedule(() -> { finish(); }, 10); // <-- this works 90% of time!
        }
    });
}
public void数据成功接收(字符串数据){
Form[]forms=getFormsFromJson(数据);
final FormListAdapter=新FormListAdapter(表单,此);
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
gvForms.setAdapter(适配器);
pbForms.setVisibility(View.INVISIBLE);

gvForms.setVisibility(View.VISIBLE)阅读并理解默认的back Naviagion实现。

这里并没有解释我的情况。我查看了Android的源代码,发现onBackPressed调用了finish方法,我也在这么做。这里的要点是,如果稍有延迟就调用它,它不会在back stack上重新创建上一个活动。你能理解一下吗?您想要实现什么功能或面临什么问题?活动A启动活动B。活动B发送HTTP请求。当活动B收到HTTP响应时,它调用其
finish
方法返回到后堆栈上的上一个活动。活动A位于前,但会重新创建,即onDestroy,然后onCreate is调用。我不希望在此处重新创建活动A,因为有大量可用RAM,并且没有其他应用程序在运行。如果我从活动B中删除
finish
调用,并在收到HTTP响应后手动按back按钮,它将按照我的预期工作,即活动A只是出现在前面而没有重新创建。