在做android推送的功能时,发现一个基础问题.activity的启动模式是singleTask.activity通过intent传递数据的时候,如果activity未启动,那么在这个刚启动的activity里通过getIntent()会获取到这个intent的数据.如果要启动的activity是已经存在的,这时候通过getInten()方法获取到的intent是已启动的activity的原始intent.换句话说intent的数据没有更新.这样在已启动的activity里拿到的intent的数据是旧数据.如果要每次获取intent传来的新数据就需要在onNewIntent(Intent intent)方法里调用setIntent(intent)设置这个传来的最新的intent.
如果activity的启动模式是standard,那么每次都重新创建一个新的activity.这样intent也是最新的.就不用通过setIntent来更新这个intent.
另外发现一个问题是PendingIntent在启动activity的时候需要将构造里的第4个参数设置为PendingIntent.FLAG_UPDATE_CURRENT.否则这个PendingIntent如果存在也不会更新.那么传过去的数据仍然是旧数据.