Example usage for java.lang.ref WeakReference WeakReference

List of usage examples for java.lang.ref WeakReference WeakReference

Introduction

In this page you can find the example usage for java.lang.ref WeakReference WeakReference.

Prototype

public WeakReference(T referent) 

Source Link

Document

Creates a new weak reference that refers to the given object.

Usage

From source file:android.support.v7.internal.view.menu.MenuBuilder.java

/**
 * Add a presenter to this menu that uses an alternate context for
 * inflating menu items. This will only hold a WeakReference; you do not
 * need to explicitly remove a presenter, but you can using
 * {@link #removeMenuPresenter(MenuPresenter)}.
 *
 * @param presenter The presenter to add
 * @param menuContext The context used to inflate menu items
 *///w ww.j  av a2 s  .c  o m
public void addMenuPresenter(MenuPresenter presenter, Context menuContext) {
    mPresenters.add(new WeakReference<MenuPresenter>(presenter));
    presenter.initForMenu(menuContext, this);
    mIsActionItemsStale = true;
}

From source file:android.support.design.widget.BottomSheetBehavior.java

@Override
public boolean onLayoutChild(CoordinatorLayout parent, V child, int layoutDirection) {
    if (ViewCompat.getFitsSystemWindows(parent) && !ViewCompat.getFitsSystemWindows(child)) {
        ViewCompat.setFitsSystemWindows(child, true);
    }//from  www.  java 2s  .  c o  m
    int savedTop = child.getTop();
    // First let the parent lay it out
    parent.onLayoutChild(child, layoutDirection);
    // Offset the bottom sheet
    mParentHeight = parent.getHeight();
    int peekHeight;
    if (mPeekHeightAuto) {
        if (mPeekHeightMin == 0) {
            mPeekHeightMin = parent.getResources()
                    .getDimensionPixelSize(R.dimen.design_bottom_sheet_peek_height_min);
        }
        peekHeight = Math.max(mPeekHeightMin, mParentHeight - parent.getWidth() * 9 / 16);
    } else {
        peekHeight = mPeekHeight;
    }
    mMinOffset = Math.max(0, mParentHeight - child.getHeight());
    mMaxOffset = Math.max(mParentHeight - peekHeight, mMinOffset);
    if (mState == STATE_EXPANDED) {
        ViewCompat.offsetTopAndBottom(child, mMinOffset);
    } else if (mHideable && mState == STATE_HIDDEN) {
        ViewCompat.offsetTopAndBottom(child, mParentHeight);
    } else if (mState == STATE_COLLAPSED) {
        ViewCompat.offsetTopAndBottom(child, mMaxOffset);
    } else if (mState == STATE_DRAGGING || mState == STATE_SETTLING) {
        ViewCompat.offsetTopAndBottom(child, savedTop - child.getTop());
    }
    if (mViewDragHelper == null) {
        mViewDragHelper = ViewDragHelper.create(parent, mDragCallback);
    }
    mViewRef = new WeakReference<>(child);
    mNestedScrollingChildRef = new WeakReference<>(findScrollingChild(child));
    return true;
}

From source file:com.battlelancer.seriesguide.ui.EpisodesActivity.java

@Override
public void onAttachFragment(Fragment fragment) {
    mFragments.add(new WeakReference<>(fragment));
}

From source file:io.werval.runtime.util.TypeResolver.java

private static Map<TypeVariable<?>, Type> getTypeVariableMap(final Class<?> targetType) {
    Reference<Map<TypeVariable<?>, Type>> ref = CACHE.get(targetType);
    Map<TypeVariable<?>, Type> map = ref != null ? ref.get() : null;

    if (map == null) {
        map = new HashMap<>();

        // Populate interfaces
        buildTypeVariableMap(targetType.getGenericInterfaces(), map);

        // Populate super classes and interfaces
        Type genericType = targetType.getGenericSuperclass();
        Class<?> type = targetType.getSuperclass();
        while (type != null && !Object.class.equals(type)) {
            if (genericType instanceof ParameterizedType) {
                buildTypeVariableMap((ParameterizedType) genericType, map);
            }//from  ww w.j  ava  2 s.c o  m
            buildTypeVariableMap(type.getGenericInterfaces(), map);

            genericType = type.getGenericSuperclass();
            type = type.getSuperclass();
        }

        // Populate enclosing classes
        type = targetType;
        while (type.isMemberClass()) {
            genericType = type.getGenericSuperclass();
            if (genericType instanceof ParameterizedType) {
                buildTypeVariableMap((ParameterizedType) genericType, map);
            }

            type = type.getEnclosingClass();
        }

        if (cacheEnabled) {
            CACHE.put(targetType, new WeakReference<>(map));
        }
    }

    return map;
}

From source file:com.actionbarsherlock.internal.view.menu.MenuBuilder.java

/**
 * Add a presenter to this menu. This will only hold a WeakReference;
 * you do not need to explicitly remove a presenter, but you can using
 * {@link #removeMenuPresenter(MenuPresenter)}.
 *
 * @param presenter The presenter to add
 *//*w  ww .  j a va 2s  .c o  m*/
public void addMenuPresenter(MenuPresenter presenter) {
    mPresenters.add(new WeakReference<MenuPresenter>(presenter));
    presenter.initForMenu(mContext, this);
    mIsActionItemsStale = true;
}

From source file:com.fastbootmobile.encore.app.fragments.PlaybackQueueFragment.java

public PlaybackQueueFragment() {
    mHandler = new PlaybackQueueHandler(new WeakReference<>(this));

    mPlayFabClickListener = new View.OnClickListener() {
        @Override//from  w  w w  .j  a v  a 2  s .co  m
        public void onClick(View v) {
            switch (PlaybackProxy.getState()) {
            case PlaybackService.STATE_PAUSED:
            case PlaybackService.STATE_STOPPED:
            case PlaybackService.STATE_PAUSING:
                PlaybackProxy.play();
                break;

            case PlaybackService.STATE_BUFFERING:
            case PlaybackService.STATE_PLAYING:
                PlaybackProxy.pause();
                break;

            }
        }
    };

    mNextClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            PlaybackProxy.next();
        }
    };

    mPreviousClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            PlaybackProxy.previous();
        }
    };

    mSeekListener = new SeekBar.OnSeekBarChangeListener() {
        private int mStartProgress;

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            mLockSeekBarUpdate = true;
            mStartProgress = seekBar.getProgress();
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            mLockSeekBarUpdate = false;
            int endProgress = seekBar.getProgress();

            if (endProgress != mStartProgress) {
                PlaybackProxy.seek(endProgress);
            }
        }
    };

    mRepeatClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            boolean currentMode = PlaybackProxy.isRepeatMode();
            boolean newMode = !currentMode;

            PlaybackProxy.setRepeatMode(newMode);
            v.animate().rotationBy(-360).setDuration(600).start();

            if (newMode) {
                ((ImageView) v).setImageResource(R.drawable.ic_replay);
            } else {
                ((ImageView) v).setImageResource(R.drawable.ic_replay_gray);
            }
        }
    };

    mShuffleClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            boolean currentMode = PlaybackProxy.isShuffleMode();
            boolean newMode = !currentMode;

            PlaybackProxy.setShuffleMode(newMode);

            if (newMode) {
                ((ImageView) v).setImageResource(R.drawable.ic_shuffle);
            } else {
                ((ImageView) v).setImageResource(R.drawable.ic_shuffle_gray);
            }
        }
    };

    mLikeClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ListenLogger logger = new ListenLogger(getActivity());
            PlaybackQueueAdapter.ViewHolder tag = (PlaybackQueueAdapter.ViewHolder) v.getTag();
            boolean isLiked = logger.isLiked(tag.song.getRef());

            if (isLiked) {
                logger.removeLike(tag.song);
                ((ImageView) v).setImageResource(R.drawable.ic_thumbs_up_gray);
            } else {
                logger.addLike(tag.song);

                final AutoMixBucket bucket = AutoMixManager.getDefault().getCurrentPlayingBucket();
                if (bucket != null) {
                    new Thread() {
                        public void run() {
                            try {
                                bucket.notifyLike();
                            } catch (EchoNestException e) {
                                Log.e(TAG, "Unable to notify like event to EchoNest");
                            }
                        }
                    }.start();
                }

                ((ImageView) v).setImageResource(R.drawable.ic_thumbs_up);
            }
        }
    };

    mDislikeClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ListenLogger logger = new ListenLogger(getActivity());
            PlaybackQueueAdapter.ViewHolder tag = (PlaybackQueueAdapter.ViewHolder) v.getTag();
            boolean isDisliked = logger.isDisliked(tag.song.getRef());

            if (isDisliked) {
                logger.removeDislike(tag.song);
                ((ImageView) v).setImageResource(R.drawable.ic_thumb_down_gray);
            } else {
                logger.addDislike(tag.song);

                final AutoMixBucket bucket = AutoMixManager.getDefault().getCurrentPlayingBucket();
                if (bucket != null) {
                    new Thread() {
                        public void run() {
                            try {
                                bucket.notifyDislike();
                            } catch (EchoNestException e) {
                                Log.e(TAG, "Unable to notify dislike event to EchoNest");
                            }
                        }
                    }.start();
                }

                ((ImageView) v).setImageResource(R.drawable.ic_thumb_down);
            }
        }
    };

    mAlbumArtClickListener = new View.OnClickListener() {
        @Override
        @TargetApi(Build.VERSION_CODES.LOLLIPOP)
        public void onClick(View v) {
            PlaybackQueueAdapter.ViewHolder tag = (PlaybackQueueAdapter.ViewHolder) v.getTag();
            if (tag.song.getAlbum() != null) {
                Bitmap hero = ((MaterialTransitionDrawable) tag.ivAlbumArt.getDrawable()).getFinalDrawable()
                        .getBitmap();
                Intent intent = AlbumActivity.craftIntent(getActivity(), hero, tag.song.getAlbum(),
                        tag.song.getProvider(), 0xFF333333);

                if (Utils.hasLollipop()) {
                    ActivityOptions opts = ActivityOptions.makeSceneTransitionAnimation(getActivity(), v,
                            "itemImage");
                    getActivity().startActivity(intent, opts.toBundle());
                } else {
                    startActivity(intent);
                }
            } else {
                Toast.makeText(getActivity(), R.string.toast_song_no_album, Toast.LENGTH_SHORT).show();
            }
        }
    };
}

From source file:biz.laenger.android.vpbs.ViewPagerBottomSheetBehavior.java

@Override
public boolean onLayoutChild(CoordinatorLayout parent, V child, int layoutDirection) {
    if (ViewCompat.getFitsSystemWindows(parent) && !ViewCompat.getFitsSystemWindows(child)) {
        ViewCompat.setFitsSystemWindows(child, true);
    }/* ww  w.j a va2 s.  c  o m*/
    int savedTop = child.getTop();
    // First let the parent lay it out
    parent.onLayoutChild(child, layoutDirection);
    // Offset the bottom sheet
    mParentHeight = parent.getHeight();
    int peekHeight;
    if (mPeekHeightAuto) {
        if (mPeekHeightMin == 0) {
            mPeekHeightMin = parent.getResources()
                    .getDimensionPixelSize(R.dimen.design_bottom_sheet_peek_height_min);
        }
        peekHeight = Math.max(mPeekHeightMin, mParentHeight - parent.getWidth() * 9 / 16);
    } else {
        peekHeight = mPeekHeight;
    }
    mMinOffset = Math.max(0, mParentHeight - child.getHeight());
    mMaxOffset = Math.max(mParentHeight - peekHeight, mMinOffset);
    if (mState == STATE_EXPANDED) {
        ViewCompat.offsetTopAndBottom(child, mMinOffset);
    } else if (mHideable && mState == STATE_HIDDEN) {
        ViewCompat.offsetTopAndBottom(child, mParentHeight);
    } else if (mState == STATE_COLLAPSED) {
        ViewCompat.offsetTopAndBottom(child, mMaxOffset);
    } else if (mState == STATE_DRAGGING || mState == STATE_SETTLING) {
        ViewCompat.offsetTopAndBottom(child, savedTop - child.getTop());
    }
    if (mViewDragHelper == null) {
        mViewDragHelper = ViewDragHelper.create(parent, mDragCallback);
    }
    mViewRef = new WeakReference<>(child);
    findAllScrollableChild(child);
    return true;
}

From source file:biz.wolschon.finance.jgnucash.mysql.impl.GnucashDatabase.java

/**
 * {@inheritDoc}/*from w ww  . j  av  a2 s.  c  o  m*/
 * @see biz.wolschon.fileformats.gnucash.GnucashWritableFile#getAccountByID(java.lang.String)
 */
@Override
public GnucashWritableAccount getAccountByID(final String aGUID) {
    GnucashWritableAccount retval = null;
    WeakReference<GnucashWritableAccount> ref = myAccountByIDCache.get(aGUID);
    if (ref != null) {
        retval = ref.get();
    }
    if (retval != null) {
        return retval;
    }
    LOG.info("getAccountByID(aGUID=" + aGUID + ")");
    String sql = "select * from accounts where guid = ?";
    try {
        retval = myJDBCTemplate.queryForObject(sql, new AccountRowMapper(this), aGUID);
        myAccountByIDCache.put(aGUID, new WeakReference<GnucashWritableAccount>(retval));
        return retval;
    } catch (org.springframework.dao.EmptyResultDataAccessException e) {
        Collection<? extends GnucashWritableAccount> writableRootAccounts = getWritableRootAccounts();
        for (GnucashWritableAccount gnucashWritableAccount : writableRootAccounts) {
            if (gnucashWritableAccount.getId().equals(aGUID)) {
                retval = gnucashWritableAccount;
                myAccountByIDCache.put(aGUID, new WeakReference<GnucashWritableAccount>(retval));
                return retval;
            }
        }
        throw e;
    }
}

From source file:br.com.anteros.social.facebook.AnterosFacebookSession.java

public void setOnLoginListener(OnLoginListener onLoginListener) {
    this.onLoginListener = new WeakReference<OnLoginListener>(onLoginListener);
}

From source file:android.support.v7.widget.AppCompatTextHelper.java

private void updateTypefaceAndStyle(Context context, TintTypedArray a) {
    mStyle = a.getInt(R.styleable.TextAppearance_android_textStyle, mStyle);

    if (a.hasValue(R.styleable.TextAppearance_android_fontFamily)
            || a.hasValue(R.styleable.TextAppearance_fontFamily)) {
        mFontTypeface = null;//from w ww .j a v a  2  s . c  o m
        int fontFamilyId = a.hasValue(R.styleable.TextAppearance_fontFamily)
                ? R.styleable.TextAppearance_fontFamily
                : R.styleable.TextAppearance_android_fontFamily;
        if (!context.isRestricted()) {
            final WeakReference<TextView> textViewWeak = new WeakReference<>(mView);
            ResourcesCompat.FontCallback replyCallback = new ResourcesCompat.FontCallback() {
                @Override
                public void onFontRetrieved(@NonNull Typeface typeface) {
                    onAsyncTypefaceReceived(textViewWeak, typeface);
                }

                @Override
                public void onFontRetrievalFailed(int reason) {
                    // Do nothing.
                }
            };
            try {
                // Note the callback will be triggered on the UI thread.
                mFontTypeface = a.getFont(fontFamilyId, mStyle, replyCallback);
                // If this call gave us an immediate result, ignore any pending callbacks.
                mAsyncFontPending = mFontTypeface == null;
            } catch (UnsupportedOperationException | Resources.NotFoundException e) {
                // Expected if it is not a font resource.
            }
        }
        if (mFontTypeface == null) {
            // Try with String. This is done by TextView JB+, but fails in ICS
            String fontFamilyName = a.getString(fontFamilyId);
            if (fontFamilyName != null) {
                mFontTypeface = Typeface.create(fontFamilyName, mStyle);
            }
        }
        return;
    }

    if (a.hasValue(R.styleable.TextAppearance_android_typeface)) {
        // Ignore previous pending fonts
        mAsyncFontPending = false;
        int typefaceIndex = a.getInt(R.styleable.TextAppearance_android_typeface, SANS);
        switch (typefaceIndex) {
        case SANS:
            mFontTypeface = Typeface.SANS_SERIF;
            break;

        case SERIF:
            mFontTypeface = Typeface.SERIF;
            break;

        case MONOSPACE:
            mFontTypeface = Typeface.MONOSPACE;
            break;
        }
    }
}