Merge "Reduce memory of emoji palette"
This commit is contained in:
commit
a701501cb6
3 changed files with 34 additions and 5 deletions
|
@ -74,6 +74,7 @@ public final class EmojiPalettesView extends LinearLayout implements OnTabChange
|
|||
ViewPager.OnPageChangeListener, View.OnClickListener,
|
||||
ScrollKeyboardView.OnKeyClickListener {
|
||||
private static final String TAG = EmojiPalettesView.class.getSimpleName();
|
||||
private static final boolean DEBUG_PAGER = false;
|
||||
private final int mKeyBackgroundId;
|
||||
private final int mEmojiFunctionalKeyBackgroundId;
|
||||
private final KeyboardLayoutSet mLayoutSet;
|
||||
|
@ -566,6 +567,20 @@ public final class EmojiPalettesView extends LinearLayout implements OnTabChange
|
|||
// TODO:
|
||||
}
|
||||
|
||||
public void startEmojiPalettes() {
|
||||
if (DEBUG_PAGER) {
|
||||
Log.d(TAG, "allocate emoji palettes memory");
|
||||
}
|
||||
mEmojiPager.setAdapter(mEmojiPalettesAdapter);
|
||||
}
|
||||
|
||||
public void stopEmojiPalettes() {
|
||||
if (DEBUG_PAGER) {
|
||||
Log.d(TAG, "deallocate emoji palettes memory");
|
||||
}
|
||||
mEmojiPager.setAdapter(null);
|
||||
}
|
||||
|
||||
public void setKeyboardActionListener(final KeyboardActionListener listener) {
|
||||
mKeyboardActionListener = listener;
|
||||
mDeleteKeyOnTouchListener.setKeyboardActionListener(mKeyboardActionListener);
|
||||
|
@ -663,6 +678,9 @@ public final class EmojiPalettesView extends LinearLayout implements OnTabChange
|
|||
|
||||
@Override
|
||||
public Object instantiateItem(final ViewGroup container, final int position) {
|
||||
if (DEBUG_PAGER) {
|
||||
Log.d(TAG, "instantiate item: " + position);
|
||||
}
|
||||
final ScrollKeyboardView oldKeyboardView = mActiveKeyboardViews.get(position);
|
||||
if (oldKeyboardView != null) {
|
||||
oldKeyboardView.deallocateMemory();
|
||||
|
@ -694,6 +712,9 @@ public final class EmojiPalettesView extends LinearLayout implements OnTabChange
|
|||
@Override
|
||||
public void destroyItem(final ViewGroup container, final int position,
|
||||
final Object object) {
|
||||
if (DEBUG_PAGER) {
|
||||
Log.d(TAG, "destroy item: " + position + ", " + object.getClass().getSimpleName());
|
||||
}
|
||||
final ScrollKeyboardView keyboardView = mActiveKeyboardViews.get(position);
|
||||
if (keyboardView != null) {
|
||||
keyboardView.deallocateMemory();
|
||||
|
|
|
@ -260,12 +260,14 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
|||
private void setMainKeyboardFrame() {
|
||||
mMainKeyboardFrame.setVisibility(View.VISIBLE);
|
||||
mEmojiPalettesView.setVisibility(View.GONE);
|
||||
mEmojiPalettesView.stopEmojiPalettes();
|
||||
}
|
||||
|
||||
// Implements {@link KeyboardState.SwitchActions}.
|
||||
@Override
|
||||
public void setEmojiKeyboard() {
|
||||
mMainKeyboardFrame.setVisibility(View.GONE);
|
||||
mEmojiPalettesView.startEmojiPalettes();
|
||||
mEmojiPalettesView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
|
@ -336,6 +338,16 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
|||
return mKeyboardView;
|
||||
}
|
||||
|
||||
public void deallocateMemory() {
|
||||
if (mKeyboardView != null) {
|
||||
mKeyboardView.cancelAllOngoingEvents();
|
||||
mKeyboardView.deallocateMemory();
|
||||
}
|
||||
if (mEmojiPalettesView != null) {
|
||||
mEmojiPalettesView.stopEmojiPalettes();
|
||||
}
|
||||
}
|
||||
|
||||
public View onCreateInputView(final boolean isHardwareAcceleratedDrawingEnabled) {
|
||||
if (mKeyboardView != null) {
|
||||
mKeyboardView.closing();
|
||||
|
|
|
@ -1050,11 +1050,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
|||
private void onFinishInputViewInternal(final boolean finishingInput) {
|
||||
super.onFinishInputView(finishingInput);
|
||||
mKeyboardSwitcher.onFinishInputView();
|
||||
final MainKeyboardView mainKeyboardView = mKeyboardSwitcher.getMainKeyboardView();
|
||||
if (mainKeyboardView != null) {
|
||||
mainKeyboardView.cancelAllOngoingEvents();
|
||||
mainKeyboardView.deallocateMemory();
|
||||
}
|
||||
mKeyboardSwitcher.deallocateMemory();
|
||||
// Remove pending messages related to update suggestions
|
||||
mHandler.cancelUpdateSuggestionStrip();
|
||||
// Should do the following in onFinishInputInternal but until JB MR2 it's not called :(
|
||||
|
|
Loading…
Reference in a new issue