moveTaskToBack


moveTaskToBack

  • 默认的 KEYCODE_BACK 事件,Activity会被 finish() ,此时Activity会被销毁的,再次进入都会重新创建。moveTaskToBack 方法可以将Activity保留至后台,可以满足App保活的需求。

  • 对于Shortcuts(桌面常用操作快捷方式)启动Activity完成特定功能,但是Activity并不需要展示时,moveTaskToBack 将非常有用。

注意: 该方法不会改变task中的Activity中的顺序,效果基本等同于home键。

moveTaskToBack 源码

public boolean moveTaskToBack(boolean nonRoot) {
        try {
            return ActivityManager.getService().moveActivityTaskToBack(mToken, nonRoot);
        } catch (RemoteException e) {
            // Empty
        }
        return false;
}

boolean nonRoot

  • false,仅当Activity为task根(即首个Activity例如启动Activity之类的)时才生效,非根Activity是则发生异常(所以注意判断)。

  • true,无论什么时候都会生效,忽略上述条件。

  • isTaskRoot() 可以判断当前Activity是否是task根

返回键模拟

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        moveTaskToBack(true);//true对任何Activity都适用
        return true;
    }
    return super.onKeyDown(keyCode, event);
    }

生命周期回调

onCreate()
onStart()
onResume()
moveTaskToBack()
onPause()
onStop()
//切回App后不再调用onCreate()
onRestart()
onStart()
onResume()

文章作者: PudgeLee
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 PudgeLee !
评论