Android 点击 Home 键导致 APP 重启

抛开内存紧张被回收不说,这种情况只出现在特定的条件下,以下三步可重现这种情况:
1.首次安装 APP 后通过安装程序的打开按钮启动 APP;
2.点击 Home 键回到桌面;
3.点击桌面图标进入 APP。
这时候你就会发现会再次启动 APP 的启动界面,具体原因不清楚,网上找到了解决方案:Android点击home键重启的解决,即在 onCreate 方法里加上如下代码:
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (!this.isTaskRoot()) {
        Intent mainIntent = getIntent();
        String action = mainIntent.getAction();
        if (mainIntent.hasCategory(Intent.CATEGORY_LAUNCHER) && action.equals(Intent.ACTION_MAIN)) {
            finish();
            return;
        }
    }
}
还有一种方法(不贴链接了,因为不知道哪个是原创,这里只是自己记录一下):
    protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    int flag = getIntent().getFlags();
    //首次启动 Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT 为 0
    //再次点击图标启动时就不为零了
    System.out.println("getFlags---" + flag + "------" + (flag & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT));
    if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
        finish();
        return;
    }
}
PS:这两种方法在 super.onCreate() 方法之后执行有效,在 setContentView() 方法之前和之后都可以,因为我复制的代码的Activity 是继承了一个 BaseActivity 的,父类中已经调用了setContentView() 方法,测试过后有效。

你可能感兴趣的:(安卓)