我正在使用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,则它不会失败,但是您可能无法获得完整的信息。