intent传值更新问题

简介:

原文:http://phenix.blogbus.com/logs/220656659.html

在做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如果存在也不会更新.那么传过去的数据仍然是旧数据.


相关文章
|
Android开发
关于Android中intent传值问题
关于Android中intent传值问题
108 0
|
Android开发
显式Intent和隐式Intent解析
Android中的Intent分为两种类型: * `显式 Intent`:按名称(完全限定类名)指定要启动的组件。 通常,您会在自己的应用中使用显式 Intent 来启动组件,这是因为您知道要启动的 Activity 或服务的类名。例如,启动新 Activity 以响应用户操作,或者启动服务以在后台下载文件。 * `隐式 Intent` :不会指定特定的组件,而是声明要执行的常规操作,从而允许其他应用中的组件来处理它。 例如,如需在地图上向用户显示位置,则可以使用隐式 Intent,请求另一具有此功能的应用在地图上显示指定的位置。
使用NavHostFragment、navigation--- avtivity向fragment传值,fragment之间传值
使用NavHostFragment、navigation--- avtivity向fragment传值,fragment之间传值
249 0
|
JSON Java 数据格式
Activity之间使用Intent传递大量数据带来问题
Intent在传递数据时是有大小限制的,这里官方并未详细说明,不过通过实验的方法可以测出数据应该被限制在1MB之(1024KB),采用的是传递某产品详情,发现当数据大小超过1024的时候,程序就会出现闪退、停止运行等异常(不同的手机反应不同),因此可以判断Intent的传输容量在1MB以内,但是根据不同版本、不同厂商,这个值会有区别。
434 0
|
XML Android开发 iOS开发
Android开发之Activity的创建跳转及传值
在Android系统的江湖中有四大组件:活动(Activity), 服务(Service), 广播接收器(Broadcast Reciver)和内容提供者(Content Provider)。
1161 0
|
Android开发 存储 开发工具