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

问题描述 投票:0回答:2

我有这个Android代码:

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

      // try to move down
      if (dialogDismisser != null) {
        dialogDismisser.run();
      }

怎么会在

dialogDismisser
之后又调用
cpa.startMainActivity
呢?

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

java android android-intent android-activity process
2个回答
4
投票

启动一个活动不会杀死你的线程。您的线程将继续运行,完成该函数以及任何其他函数,直到返回循环程序或结束线程。如果不想执行剩余的代码,则需要返回。

新的 Activity 将在下次主线程有机会查看其消息时启动。因此,如果在线程上调用此方法,则进行下一个上下文切换。如果这是在主线程上运行,那么当它返回到循环程序时,在处理任何其他挂起的消息之后。 (假设您在自己的应用程序中启动一个 Activity。如果没有,它会在下次操作系统上下文切换到该应用程序的主线程并且该线程到达循环程序时发生)。


3
投票

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

当然。这是一个异步操作。此外,调用会导致通过 IPC 启动一个新的(或启动已经运行的)进程,而不会终止调用者。

© www.soinside.com 2019 - 2024. All rights reserved.