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() | ...... )
.......
缓冲还是没有清理,但总之问题解决了,算是一个思路。