4

我正在使用单任务模式活动,该活动通过指定意图过滤器来处理某种类型的文件。我需要只处理每个这样的文件 Intent 一次。问题是 onNewIntent() 仅在任务已经存在时才被调用,这迫使我也处理来自 onCreate() 的意图。不幸的是,onCreate() 被调用的原因有很多(例如屏幕旋转),而 getIntent() 返回的 Intent 可能在多个 onCreate() 中是相同的。当然,可以使用一些丑陋的 hack 来解决这个问题,但我想知道优雅的解决方案是什么。到目前为止,我想出的最佳解决方案是每次处理意图后 setIntent(new Intent(Intent.ACTION_MAIN)) 。

谢谢!

4

3 回答 3

0

我不确定我是否遇到了你的问题,但是一旦你调用了一个意图并开始新的活动,在调用完成()之后立即;结束您要离开的活动。这将结束您的最后一个活动,并防止多个活动同时运行。

此外,如果您使用屏幕旋转作为启动活动的一种方式,您始终可以通过使用“If and Else”语句设置一些检查来控制您不想多次启动的活动。

于 2011-06-30T06:30:22.647 回答
0

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

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 
              | Intent.FLAG_ACTIVITY_SINGLE_TOP);
于 2011-12-13T12:49:46.000 回答
-1

setIntent(null) 处理后怎么样?

于 2011-06-29T23:01:10.170 回答