Android中ViewPgae中的Fragment如何確認當前頁面可見的問題

由於在ViewPage中PageAdapter來管理所有的Fragment。在加載一個Fragment的時候,會自動緩存左右幾個(默認是一個)頁面,此時也會調用到正常的生命周期函數,onCreate,onCrateView,onResume.可是這樣就幹擾瞭我們統計頁面打開次數。

例如:一個ViewPager中存在三個頁面的時候,當默認是第一個頁面,並且被打開。那麼在我們的後臺就會收集到用戶打開兩個頁面的信息。這個對我們的統計就是一個很大的幹擾。所以就不能再將統計代碼放在onResume中,要放在一個其他的函數內,但問題的關鍵是如何確認當前的Fragment可見?這樣我才能把統計函數移植過去。

在問這個問題的時候把焦點都放在生命周期的觸發上瞭。發現Fragment下專門有一個setUserVisibleHint函數來處理這個事情:

  1. public void setUserVisibleHint(boolean isVisibleToUser) {
  2. // TODO Auto-generated method stub
  3. super.setUserVisibleHint(isVisibleToUser);
  4. if (isVisibleToUser == true) {
  5. }
  6. else if (isVisibleToUser == false) {
  7. }
  8. }

這樣我把統計代碼放置在當isVisibleToUser是可見的時候判斷分支中,應該可以解決我的問題瞭。

發佈留言