gpt4 book ai didi

android - Facebook Android SDK - 使用 UiLifecycleHelper 时,我应该使用 Activity 还是 Application 作为上下文?

转载 作者:行者123 更新时间:2023-11-30 03:45:27 25 4
gpt4 key购买 nike

您好,我目前正在使用适用于 Android 的 Facebook SDK 3.0。首先是一些事实。

  • 我没有将我的 app_id 放在 AndroidManifest.xml 中,而是以编程方式在我的 Java 代码中设置该值。因此,在处理 session 时,我使用类似以下辅助方法的方法。

    if (session == null || session.isClosed()) {
    String applicationId = Persistent.getString(null, SocialUtil.FACEBOOK_APP_ID);
    session = new Session.Builder(Utils.ctx).setApplicationId(applicationId).build();
    Session.setActiveSession(session);
    }
  • 一旦用户使用 facebook 登录,该 session 就会用于许多 Activity ,这就是我为 session 提供应用程序上下文的原因。

正如您在 session 上下文中看到的那样,我提供了 Utils.ctx,它是一个应用程序对象。由于 Facebook SDK 的 native UiLifecycleHelper 在 session 不存在时创建与 Activity 的 session ,我通过应对原始 UiLifeCycleHelper 并只是切换创建了我自己的 FBIUiLifecycleHelper

    session = new Session(activity);

    String applicationId = Persistent.getString(null, SocialUtil.FACEBOOK_APP_ID);
session = new Session.Builder(Utils.ctx).setApplicationId(applicationId).build();

.

但是,似乎只要 session 状态在我的 Activity 中发生变化,回调函数就根本不会被调用。我认为这是因为我在处理 session 时使用了应用程序上下文而不是 Activity 上下文。

我的问题是,1. 当您为 session 上下文提供应用程序上下文或 Activity 上下文时有何不同?2. 什么时候推荐练习哪一个?为什么?3. 假设用户登录创建了一个带有 Activity 上下文的 session 。一旦通过setActiveSession()设置了这个session,这个session是否可以通过调用getActiveSession()在其他 Activity 中使用?也许我真的不必为 session 上下文使用应用程序上下文?

谢谢!

最佳答案

对于 1. 和 2.,创建 session 所用的上下文无关紧要,可以是任何上下文(应用程序、服务或 Activity )。但是,当您调用任何 open* 方法时,您必须通过 OpenRequest 将 Activity 或 Fragment 传递到那里。如果您的 session 没有在状态之间转换,那么这是一个问题(请在您实际打开 session 时发布更多代码,并确保您覆盖 Activity 或 Fragment 中的 onActivityResult 方法)。

对于 3.,是的,您可以从任何地方(Activity、Fragment 或您应用中的任何其他代码)调用 getActiveSession。

关于android - Facebook Android SDK - 使用 UiLifecycleHelper 时,我应该使用 Activity 还是 Application 作为上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15077849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com