我可以使用ApplicationContext记录事件而不是Facebook应用事件的活动上下文吗?

时间:2015-10-04 03:48:00

标签: android facebook android-facebook

我正在使用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);

 }
}

当我记录事件时,我是否可以创建单例并传递该上下文而不是使用活动上下文来记录代码aboce等事件?或者我是否只需要根据文档传递活动上下文?

1 个答案:

答案 0 :(得分:4)

它会起作用,但您可能无法获得完整信息。对于某些事件,我们将尝试从上下文中获取活动名称等内容。它是有保护的,如果Context不是一个Activity,它不会失败,但你可能无法获得传递的全部信息。