在我的一个活动的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 issue
和finish
的调用之间的持续时间对于Android的喜好要少得多,那么它会重新创建之前的活动。在那一行,我只是在用数据填充后向用户显示GridView
。请注意,这是一个示例场景,我知道用户没有时间在该视图中查看数据。
我怎样才能克服这一点?究竟是怎么回事?