代码之家  ›  专栏  ›  技术社区  ›  Elad Benda

为什么在意图重定向代码之后执行代码?

  •  1
  • Elad Benda  · 技术社区  · 6 年前

    我有这个 安卓

          Intent launchIntent = packageManager.getLaunchIntentForPackage(context.getPackageName());
          cpa.startMainActivity(launchIntent.getComponent(), user);
    
          // try to move down
          if (dialogDismisser != null) {
            dialogDismisser.run();
          }
    

    怎么会是 dialogDismisser 即使在 cpa.startMainActivity ?

    意图重定向承诺只会在将来某个时候发生?

    3 回复  |  直到 6 年前
        1
  •  3
  •   Gabe Sechan    6 年前

    启动一个活动不会终止线程。您的线程将继续运行、完成函数和任何其他函数,直到其返回到循环器或结束线程。如果不想执行剩余的代码,则需要返回。

    新活动将在主线程下次有机会查看其消息时开始。因此,如果在线程上调用,则下一个上下文切换。如果这是在主线程上运行的,那么在处理任何其他挂起的消息之后,当它返回到循环程序时(假设你在自己的应用程序中开始一项活动。如果不是这样,那么下次操作系统上下文切换到该应用程序的主线程,并且该线程到达循环器时,就会发生这种情况。

        2
  •  3
  •   Onik    6 年前

    意图重定向承诺只会在将来某个时候发生?

    当然。这是一个异步操作。此外,调用的结果是通过 不终止呼叫者。

        3
  •  2
  •   Onik    6 年前

    (如下所示) 你写的开始另一个 活动

    Intent launchIntent = packageManager.getLaunchIntentForPackage(context.getPackageName());
    cpa.startMainActivity(launchIntent.getComponent(), user);
    

    开始新的 活动 安卓 不结束线程。

    所以剩下的代码 (如下所示)

    if (dialogDismisser != null) {
        dialogDismisser.run();
    }
    

    回答你的最后一个问题:

    意图重定向承诺只会在将来某个时候发生?

    有点。一个新的 立即启动,以及意图;但是,您的其余代码将继续运行,直到到达结尾。