Android按返回键退出程序但不销毁

最近在调试程序,发现每次按返回键,一直退出到桌面。再次打开都要重新从启动界面进入,但是微信QQ并不是这样的。调试了一下微信的,发现返回到桌面的时候,微信的界面还是处于stop状态,并没有销毁。后来找了好久,找到了解决方法,主要是两个函数的使用:

boolean isTaskRoot()

用来判断该Activity是否为任务栈中的根Activity

boolean moveTaskToBack (boolean nonRoot)

用于将activity退到后台,不是finish
从生命周期来说,会执行onPause、onStop,但不会执行onDestroy
恢复的时候也一样,会执行onStart、onResume,但不会执行onCreate

参数nonRoot表示的含义是此方法对非根activity是否有效,

  • true表示对所有activity均有效,
  • false表示只对根activity有效。

返回值:该activity被退出到后台或者他已经在后台了返回true,否则返回false

官方文档:

public boolean moveTaskToBack (boolean nonRoot)
Since: API Level 1Move the task containing this activity to the back of the activity stack. The activity’s order within the task is unchanged.
Parameters:
nonRoot If false then this only works if the activity is the root of a task; if true it will work for any activity in a task.
Returns:
If the task was moved (or it was already at the back) true is returned, else false.

使用实例:

在baseActivity 中声明下面的函数:

 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
            if (isTaskRoot()) {
                moveTaskToBack(false);
                return true;
            } else {
                return super.onKeyDown(keyCode, event);

            }
        } 
 }

参考:

Activity之isTaskRoot和moveTaskToBack方法简介
Android按返回键退出程序但不销毁
Android moveTaskToBack()方法实现手动隐藏当前Activity
【Android】Android实现不重复启动APP的方法

猜你喜欢

转载自blog.csdn.net/xx326664162/article/details/79232798