问题:
我们使用 intent 在两个 activity 之间带值跳转的时候,有时候会遇到,接收值的那个 activity
收不到 intent 里的数据。
解决方法说明:
检查自己接收值的那个activity,看一下启动模式,如果是 singleTask 或 singleInstance.
解决方法:
当启动模式为 singleTask 时,activity 通过 intent 传递数据的时候,如果 activity 未启动,那么在这个刚启动的 activity 里通过 getIntent() 会获取到这个 intent 的数据。如果要启动的 activity 是已经存在的,这时候通过 getInten() 方法获取到的 intent 是已启动的 activity 的原始 intent,也就是说 intent 的数据没有更新,这样在已启动的 activity 里拿到的 intent 的数据是旧数据。
如果要每次获取 intent 传来的新数据就需要在 onNewIntent(Intent intent) 方法里调用setIntent(intent)设置这个传来的最新的 intent。
即在启动模式为 singleTask 的 activity 里加上以下代码,然后通过 getIntent() 就可以获取到新传递过来的值了
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// 解决重启intent数据丢失问题
setIntent(intent);
}