Zoo*_*key 2 tabs android google-analytics android-fragments android-actionbar
我使用ViewPager和ActionBar标签向用户显示数据,我还想将当前屏幕发送到Google Analytics.
但我有问题,因为ActionBar标签的工作方式是他们正在加载当前和下一个片段的数据,因此在Google Analytics Real Time中我只显示下一个片段.
对于ActionBar标签中的每个片段,我将数据发送到Google Analytics,如下所示:
@Override
public void onStart() {
// Get an Analytics tracker to report app starts & uncaught exceptions
// etc.
// Get tracker.
Tracker t = ((MyApplication) getActivity().getApplication())
.getTracker(TrackerName.APP_TRACKER);
// Set screen name
t.setScreenName(screenName);
// Send a screen view.
t.send(new HitBuilders.AppViewBuilder().build());
super.onStart();
}
Run Code Online (Sandbox Code Playgroud)
我怎么能解决这个问题?
我发现在发送GA screenview事件之前检查每个片段的组合getUserVisibleHint()和isResumed()内部组合是有效的.覆盖setUserVisibleHint(boolean)并onResume()确保发送屏幕视图事件,而不管它们的调用顺序如何.
此解决方案解决了使用ViewPager.setOnPageChengeListener初始片段未被onPageSelected调用的问题.
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
publishScreenViewEvent();
}
@Override
public void onResume() {
super.onResume();
publishScreenViewEvent();
}
private void publishScreenViewEvent() {
// Only publish if this fragment is visible to the user and the fragment has been resumed.
// setUserVisibleHint may be called before onResume and before this fragment is injected.
// onResume may be called before setUserVisibleHint because this fragment is in a ViewPager that
// caches the next and previous fragment by calling onResume before the fragment is visible
if (getUserVisibleHint() && isResumed()) {
// Send GA screenview event here
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1572 次 |
| 最近记录: |