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

标签 android performance

我有一个简单的 Activity ,其中包含一个 ImageView 和一个简单的菜单项,用于在之前的 Activity 中返回。

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

我刚刚意识到,如果我在上一个 Activity 中按下后退按钮返回,android 的速度非常快,但是按下上面的菜单项,它会浪费一秒钟。为什么?

最佳答案

返回的默认方式是

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

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

希望这对您有所帮助!

关于android - 后退按钮比在 onOptionsItemSelected 菜单中调用 finish() 更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48034351/

相关文章:

android - 如何让Android Studio忘记其CMake.exe的位置?

c# - 编译 xamarin android (mono for android) 应用程序时不断出现此错误

android - 共享库可以调用另一个共享库吗?

performance - 在 symfony 3 上的所有 phpunit 测试之前加载一次装置

android - TableRow 内部的 LinearLayout 发出警告

android 应用程序电子邮件发送到字段

visual-studio-2008 - Visual Studio 2008 非常慢

java - 递归和非递归算法的性能,大 O 表示法

sql-server - "Sub SELECT before INNER JOIN"还是 "WHERE after INNER JOIN"?

performance - 在 postgres 中索引日期字段的推荐方法?