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

来源:互联网 发布:数据铭品 编辑:程序博客网 时间:2024/06/13 03:59

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