为什么在意图重定向代码之后执行代码?
How come the code is executed after intent redirection code?
我有这个 Android 代码:
Intent launchIntent = packageManager.getLaunchIntentForPackage(context.getPackageName());
cpa.startMainActivity(launchIntent.getComponent(), user);
// try to move down
if (dialogDismisser != null) {
dialogDismisser.run();
}
怎么会在 cpa.startMainActivity
之后调用 dialogDismisser
?
意图重定向是否承诺仅在未来某个时间发生?
Intent redirection is promised to only happen sometime in the future?
当然可以。这是一个异步操作。此外,调用会导致通过 IPC 启动一个新的(或已经 运行)进程,而不会终止调用者。
启动 activity 不会终止您的线程。您的线程将继续 运行,完成该函数和任何其他函数,直到它返回其循环程序或结束线程。如果不想执行剩下的代码,需要return.
新的 Activity 将在下次主线程有机会查看其消息时启动。因此,如果这是在线程上调用的,则下一个上下文切换。如果这是主线程上的 运行,那么当它 return 发送到循环程序时,在处理任何其他未决消息之后。 (假设您在自己的应用程序中启动了一个 Activity。如果没有,它会在下一次 OS 上下文切换到该应用程序的主线程并且该线程到达循环程序时发生)。
您编写的前两行代码(如下所示)开始另一个Activity.
Intent launchIntent = packageManager.getLaunchIntentForPackage(context.getPackageName());
cpa.startMainActivity(launchIntent.getComponent(), user);
在 Android 上开始新的 Activities 不会结束线程。
因此您的代码的其余部分 (如下所示),将继续 运行,直到到达代码的末尾。
if (dialogDismisser != null) {
dialogDismisser.run();
}
然后回答你的最后一个问题:
Intent redirection is promised to only happen sometime in the future?
有点。一个新的 Activity 随 intent 立即开始;但是,您的其余代码将继续 运行 直到结束。
我有这个 Android 代码:
Intent launchIntent = packageManager.getLaunchIntentForPackage(context.getPackageName());
cpa.startMainActivity(launchIntent.getComponent(), user);
// try to move down
if (dialogDismisser != null) {
dialogDismisser.run();
}
怎么会在 cpa.startMainActivity
之后调用 dialogDismisser
?
意图重定向是否承诺仅在未来某个时间发生?
Intent redirection is promised to only happen sometime in the future?
当然可以。这是一个异步操作。此外,调用会导致通过 IPC 启动一个新的(或已经 运行)进程,而不会终止调用者。
启动 activity 不会终止您的线程。您的线程将继续 运行,完成该函数和任何其他函数,直到它返回其循环程序或结束线程。如果不想执行剩下的代码,需要return.
新的 Activity 将在下次主线程有机会查看其消息时启动。因此,如果这是在线程上调用的,则下一个上下文切换。如果这是主线程上的 运行,那么当它 return 发送到循环程序时,在处理任何其他未决消息之后。 (假设您在自己的应用程序中启动了一个 Activity。如果没有,它会在下一次 OS 上下文切换到该应用程序的主线程并且该线程到达循环程序时发生)。
您编写的前两行代码(如下所示)开始另一个Activity.
Intent launchIntent = packageManager.getLaunchIntentForPackage(context.getPackageName());
cpa.startMainActivity(launchIntent.getComponent(), user);
在 Android 上开始新的 Activities 不会结束线程。
因此您的代码的其余部分 (如下所示),将继续 运行,直到到达代码的末尾。
if (dialogDismisser != null) {
dialogDismisser.run();
}
然后回答你的最后一个问题:
Intent redirection is promised to only happen sometime in the future?
有点。一个新的 Activity 随 intent 立即开始;但是,您的其余代码将继续 运行 直到结束。