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