我正在使用facebook sdk跟踪应用安装并记录事件。我的应用中有4个活动。根据文档,我在每个活动中都处于激活和停用状态。

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);

 }
}


当我记录事件时,是否可以创建一个单例并传递该上下文,而不是使用活动上下文来记录诸如上述代码之类的事件?还是仅根据文档传递活动上下文?

最佳答案

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

10-02 04:27
查看更多