我可以使用 ApplicationContext 代替 Activity facebook 应用程序事件的上下文来记录事件吗?

Can I use ApplicationContext to log events instead of Activity context for facebook app events?

我正在使用 facebook sdk 来跟踪应用程序安装并记录 events.I 我的应用程序中有 4 个活动。根据文档,我在每个 activity.

中激活和停用
public class MyActivity extends Activity {

 private FacebookSingleton fb = FacebookSingleton.getInstance();

 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

   //some event occurred
    Bundle params = new Bundle();
    params.putString("SEARCH QUERY", query);
    fb.trackEventForFb("PRODUCT SEARCH", params);
 }

 @Override
   protected void onResume() { 
   super.onResume(); 
   AppEventsLogger.activateApp(this); 
 }

 @Override
   protected void onPause() { 
   super.onPause(); 
   AppEventsLogger.deactivateApp(this);
}



public class FacebookSingleton {

private static MyApplication appInstance;
private static FacebookSingleton instance;

private FacebookSingleton() {
 };
public static void setupFb(MyApplication myAppInstance) {
    if (instance == null) {
        instance = new FacebookSingleton();
        appInstance = myAppInstance;
    }
}

public void trackFacebookEvent(String event,Bundle parameters) {
    AppEventsLogger logger = AppEventsLogger.newLogger(appInstance);
    logger.logEvent(event, parameters);
}

这是我的申请

public class MyApplication extends Application {

@Override
public void onCreate() {
    super.onCreate();

    FacebookSdk.sdkInitialize(this);
    FacebookSingleton.setupFb(this);

 }
}

当我记录事件时,我是否可以创建一个单例并传递该上下文而不是使用 activity 上下文来记录事件,例如上面的代码?或者我是否只需要根据文档传递 activity 上下文?

它会起作用,但您可能无法获得完整信息。对于某些事件,我们将尝试从上下文中获取诸如 Activity 名称之类的东西。它受到保护,因此如果上下文不是 Activity,它不会失败,但您可能无法获得传递的完整信息。