最近打开闲鱼,微信,发现他们点击返回到桌面的时候,他们的activity并没有直接销毁,还是依然保留在返回之前浏览的界面。查了一下资料,的确有可以操作的办法。
isTaskRoot()
isTaskRoot()
方法用来判断该Activity是否为任务栈中的根Activity,即启动应用的第一个Activity。
moveTaskToBack()
moveTaskToBack()
方法用于将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.
使用案例
重写onBackPressed
或者onKeyDown
事件等来监听返回键事件:
1 |
|