如果我的应用已经具有焦点,如何检测新的Intent?

时间:2014-12-05 13:00:05

标签: android android-intent focus

我有一个连接到服务器的应用程序,可以长时间保持连接。

我有另一个自动化东西的应用程序。例如。它可以根据规则启动上述客户端并传递参数,使其在没有用户操作的情况下完成(在Intent中)。

现在:如果客户端应用程序未运行或没有焦点,则此方法正常。我捕获onResume()并从intent中提取参数。

但是如果客户端已经在前台(因为用户在上次使用后没有关闭它)并且从自动应用程序调用它(例如基于时间),它会一直保持焦点而不是失去它。那么如何检测它再次发射? onResume()似乎没有触发,onNewIntent()也没用。

我很感激任何想法。

1 个答案:

答案 0 :(得分:2)

documentation说明了以下说明:

  

对于在其包中将 launchMode设置为“singleTop”的活动,或者在调用startActivity(Intent)时客户端使用FLAG_ACTIVITY_SINGLE_TOP标志的活动。在任何一种情况下,当在活动堆栈的顶部而不是正在启动的活动的新实例重新启动活动时,将在现有实例上使用用于重新启动的Intent调用onNewIntent()它

     

在接收新意图之前,活动将始终暂停,因此您可以指望在此方法之后调用onResume()。

     

请注意,getIntent()仍会返回原始的Intent。您可以使用setIntent(Intent)将其更新为此新Intent

如果您遵循所有内容,则应调用onNewIntent()方法。