SingleTop启动模式真的可以防止多次打开栈顶的Activity么

SingleTop启动模式真的可以防止多次打开栈顶的Activity么


首先要知道什么是singleTop?

有新的页面启动请求时,当目标Activity处于当前栈顶时,会调用Activity的onNewIntent()方法,但不创建新实例。如果栈顶没有目标Activity则创建。

实际操作:

    先在AndroidManifest.xml中将目标activity中的属性launchMode设置成singleTop,然后在activity中设置onClick事件。

图1

图1中点击事件确实可以防止手动连续多次点击,跳转页面。

但是,如果在代码中多次跳转页面呢:

图2

图2中,如果是程序执行的多次跳转同一个目标页面,startActivty无法反映过来,还没来得及判断目标页面是否是singleTop的启动模式,就已经跳转过去了。可能是代码比xml属性更先执行(具体情况可以了解下startActivty启动的流程)。所以可以用以下方法来解决这种问题:

图3

在intent中设置flag,这样就保证了,只会有一个。

你可能感兴趣的:(SingleTop启动模式真的可以防止多次打开栈顶的Activity么)