如何解决 Intent 调用缓冲数据问题

Android开发中,经常会遇到一个app调用另外app的情况,android

为此提供的解决方法为:Intent

通过Intent 加 Action命令 和指定flags 决定Intent调用的传输内容和使用方式。

相关代码的样例网上到处都是,不再详述了。

我要说的问题是:经过intent调用后的app,会缓存起来Intent调用和数据,这个

会导致下次手动运行该app时,app仍然会收到Intent调用和数据,导致程序去

错误运行支持外部app调用的逻辑。


这个问题思路首先是:

Intent本身是否有清理的功能支持。去文档查看了下,的确有很多类似clear ,replace....之类的接口

但调用后,发现没有任何作用,数据没有清掉。


去codestack trace该问题,发现论坛上有放置几年的提问,但没有人提出正确的解答。


我个人重新研究了相关文档接口后认为:清理接口应该是需要特定的权限才能起作用,并不是不能使用。

但该权限一时无法找到,文档也没有相关提及。


我的解决方法:

既然无法清理,那么就识别出来吧。 Intent数据到来时,伴随的action和flags这些数据是不会被存储的,完全根据

调用的实际情况传递,所以,根据action和flags的数值判断出当前调用的方式即可。

eg:

if(Intent.getAction().contains( "action.sender"))

.......

或者

if(Intent.getFlags() | ...... )

 .......

缓冲还是没有清理,但总之问题解决了,算是一个思路。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值