2016-04-01 4 views
0

Я понял, что при использовании компоновки вкладок в Android она всегда загружает вкладки, касаясь ее, т. Е. Вкладку до и вкладку после того, как она загружается при ее странице.Остановить Android TabLayout загрузка следующей страницы автоматически

Однако я загружаю много контента и изображений с сервера, и это приводит к большому количеству использования данных и памяти, и я часто получаю OOM errors, я эффективно показываю изображения с помощью Glide.

В принципе мне нужно знать 3 вещи:

  1. Как я могу остановить загрузку вкладки макета любых страниц, кроме текущего один
  2. Как clear/recycle/delete язычка старого после получения на новую страницу в очистить память
  3. Как всегда обновить вкладку, когда вы вернетесь к нему

ответ

7

по умолчанию это viewpager.setOffscreenPageLimit (1), то есть View пейджер будет по умолчанию лоа d atleast 1 справа и один на левой вкладке текущей вкладки. Это делается так, главным образом потому, что есть точка, когда u slide viewpager, когда отображается определенная область обеих вкладок. Для этих плавных переходов требуется предварительная загрузка. Вы не может установить его viewpager.setOffscreenPageLimit (0). Единственный выход заключается в использование этого метода setUserVisibleHint добавьте в ваш фрагмент

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
    if (isVisibleToUser) { 
     // load data here 
    }else{ 
     // fragment is no longer visible 
    } 
} 

Это будет называться только тогда, когда эта конкретная вкладка видна пользователем, так только то и можно назвать все функции loadfing. Надеюсь, поможет.

Смежные вопросы