在意图重定向代码之后如何执行代码?

时间:2018-10-08 21:29:38

标签: android multithreading android-intent process android-lifecycle

我有这个 Android 代码:

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

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

怎么可能在dialogDismisser之后调用cpa.startMainActivity

是否可以在将来的某个时间进行意图重定向?

3 个答案:

答案 0 :(得分:3)

  

是否可以在将来的某个时间进行意图重定向?

好的。这是一个异步操作。而且,该呼叫导致通过 IPC 启动新的(或启动已经运行的)进程,而不会终止呼叫者。

答案 1 :(得分:3)

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

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

答案 2 :(得分:2)

您编写的前两行代码(如下所示)开始另一个 Activity

com.google.firebase.FirebaseException: An internal error has occurred. [ Unsuccessful debug_token response from Facebook:{"error":{"message":"(#100) You must provide an app access token or a user access token that is an owner or developer of the app","type":"OAuthException","code":100,"fbtrace_id":"FKCMN4gqtan"}} ]
        at com.google.firebase.auth.api.internal.zzcf.zzb(Unknown Source)
        at com.google.firebase.auth.api.internal.zzbb.zza(Unknown Source)
        at com.google.firebase.auth.api.internal.zzcz.zzc(Unknown Source)
        at com.google.firebase.auth.api.internal.zzdc.onFailure(Unknown Source)
        at com.google.firebase.auth.api.internal.zzcj.dispatchTransaction(Unknown Source)
        at com.google.android.gms.internal.firebase_auth.zzb.onTransact(Unknown Source)
        at android.os.Binder.execTransact(Binder.java:565)
2018-10-08 16:50:50.130 10978-10978/company.com.myapp D/FacebookLogin: Logged in as : null

Android 上启动新的活动不会结束线程。

因此,其余代码(如下所示)将继续运行,直到到达代码末尾为止。

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

并回答您的最后一个问题:

  

是否可以在将来的某个时间进行意图重定向?

种类。新的 Activity 和意图将立即启动;但是,其余代码将继续运行,直到结束为止。