后退按钮比在onOptionItemSelected菜单中调用finish()更快

时间:2017-12-30 13:26:24

标签: android performance

我有一个简单的活动,包含一个图像视图和一个简单的menuItem,用于在previus活动中回来。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){
        case android.R.id.home:
            finish();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

我刚刚意识到,如果我按下后退按钮返回上一个活动,android会非常快,但按下上面的菜单项会浪费一秒钟。为什么呢?

1 个答案:

答案 0 :(得分:1)

返回的默认方式是

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){
        case android.R.id.home:
            return super.onOptionsItemSelected(item);
    }
}

通过致电finish(),您可以安排销毁的当前活动,即致电onDestroy()。这会进行一些清理,从而产生开销,并且您会遇到一些延迟。所以,如果你真的不必在那里使用finish()(例如关闭一些对话框或游标),只需省略它并使用提供的默认解决方案。

希望这有帮助!