使用singleTask时如何处理每个Intent一次

时间:2011-06-29 22:08:51

标签: android android-activity android-intent launchmode

我正在使用singleTask模式活动,通过指定intent-filters来处理某种类型的文件。 我需要处理每个这样的文件Intent一次。问题是onNewIntent()仅在任务已经存在时被调用,迫使我也从onCreate()处理意图。不幸的是,onCreate()被调用了很多原因(例如屏幕旋转),并且getIntent()返回的Intent可能与几个onCreate()的相同。 当然,有可能使用一些丑陋的黑客解决这个问题,但我想知道优雅的解决方案是什么。 到目前为止,我提出的最佳解决方案是每次处理意图后都设置setIntent(新的Intent(Intent.ACTION_MAIN))。这与Web服务器在POST页面后将您重定向到GET页面的方式类似,以避免因刷新而重做操作。

谢谢!

3 个答案:

答案 0 :(得分:0)

我不确定如果我得到你的问题,但是一旦你召集意图并开始新的活动, 呼叫结束后立即();结束你要离开的活动。这将结束您的上一次活动,并防止多个活动同时运行。

此外,如果您使用屏幕旋转作为启动活动的方式,您可以通过使用" If和Else"设置一些检查来控制您不想多次启动的那个人。语句。

答案 1 :(得分:0)

删除singleTask将解决您的问题;
调用删除singleTask的活动,可以替换为:

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 
              | Intent.FLAG_ACTIVITY_SINGLE_TOP);

答案 2 :(得分:-1)

处理后的setIntent(null)怎么样?