@Override
 public void onDestroy() {
   super.onDestroy();
   if (mThumbnailer != null) mThumbnailer.clearJobs();
   mBarrier.reset();
   mVideoAdapter.clear();
 }
  @Override
  public void onPause() {
    super.onPause();
    mGVFirstVisiblePos = mGridView.getFirstVisiblePosition();
    mMediaLibrary.setBrowser(null);
    mMediaLibrary.removeUpdateHandler(mHandler);

    /* Stop the thumbnailer */
    if (mThumbnailer != null) mThumbnailer.stop();
  }
  @Override
  public void onResume() {
    super.onResume();
    if ((getActivity() instanceof MainActivity)) mMainActivity = (MainActivity) getActivity();
    mMediaLibrary.setBrowser(this);
    mMediaLibrary.addUpdateHandler(mHandler);
    final boolean refresh = mVideoAdapter.isEmpty();
    if (refresh) updateList();
    else {
      mViewNomedia.setVisibility(View.GONE);
      focusHelper(false);
    }
    // Get & set times
    HashMap<String, Long> times = MediaDatabase.getInstance().getVideoTimes();
    mVideoAdapter.setTimes(times);
    mGridView.setSelection(mGVFirstVisiblePos);
    updateViewMode();
    if (mGroup == null && refresh) mAnimator.animate();

    /* Start the thumbnailer */
    if (mThumbnailer != null) mThumbnailer.start(this);
  }
  public void updateList() {
    if (!mSwipeRefreshLayout.isRefreshing()) mSwipeRefreshLayout.setRefreshing(true);
    final List<MediaWrapper> itemList = mMediaLibrary.getVideoItems();

    if (mThumbnailer != null) mThumbnailer.clearJobs();
    else Log.w(TAG, "Can't generate thumbnails, the thumbnailer is missing");

    mVideoAdapter.setNotifyOnChange(true);
    mVideoAdapter.clear();

    if (itemList.size() > 0) {
      new Thread(
              new Runnable() {
                @Override
                public void run() {
                  if (mGroup != null || itemList.size() <= 10) {
                    for (MediaWrapper item : itemList) {
                      if (mGroup == null || item.getTitle().startsWith(mGroup)) {
                        mVideoAdapter.setNotifyOnChange(false);
                        mVideoAdapter.add(item);
                        if (mThumbnailer != null) mThumbnailer.addJob(item);
                      }
                    }
                  } else {
                    List<MediaGroup> groups = MediaGroup.group(itemList);
                    for (MediaGroup item : groups) {
                      mVideoAdapter.setNotifyOnChange(false);
                      mVideoAdapter.add(item.getMedia());
                      if (mThumbnailer != null) mThumbnailer.addJob(item);
                    }
                  }
                  if (mReadyToDisplay) display();
                }
              })
          .start();
    } else focusHelper(true);
    stopRefresh();
  }