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,这样就保证了,只会有一个。
网友评论