很多知识当我们用到的时候,才发觉有多好用。今天需要完成一个功能,创建一个悬浮窗,点击悬浮窗上按钮,加载到一个包含webView 的activity,为了避免activity重复创建。所以使用了activity的启动模式singleTask,这个方法解决了,activity的重复创建。但是出现一个问题,就是这个activity需要接收一个intent值的。
在这个activity第一次创建的时候,可以使用getInent()来接收这个数据。如果重复启动activity,getIntent()也不会执行了,如果用getIntent()得到的只能是个老的intent了,这个就导致了,activity的数据没有更新。无论怎么点击悬浮窗上的按钮,只会启动栈已经内存在的activity但是,不会更新activity的数据。这时候newIntent()这个方法就出来了!当使用singleTop,或者是singleTask的启动模式。如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,并调用其oonNewIntent(Intent intent)。这时候得到的intent就是新传进来的intent,拿到的数据也是新的,对应的。 当调用到onNewIntent(intent)的时候,需要在onNewIntent() 中使用setIntent(intent)赋值给Activity的Intent.否则,后续的getIntent()都是得到老的Intent。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)