调用Activity.finish总是在Back Stack上重新创建以前的活动

时间:2014-12-30 09:47:21

标签: 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
        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!
        }
    });
}

所以看起来如果行评论this is the issuefinish的调用之间的持续时间对于Android的喜好要少得多,那么它会重新创建之前的活动。在那一行,我只是在用数据填充后向用户显示GridView。请注意,这是一个示例场景,我知道用户没有时间在该视图中查看数据。

我怎样才能克服这一点?究竟是怎么回事?

1 个答案:

答案 0 :(得分:-1)

阅读Managing the ActivityTasks and Back Stack以了解默认的后退导航实施。