Loading core/java/android/inputmethodservice/KeyboardView.java +149 −140 Original line number Diff line number Diff line Loading @@ -253,28 +253,7 @@ public class KeyboardView extends View implements View.OnClickListener { /** Whether the requirement of a headset to hear passwords if accessibility is enabled is announced. */ private boolean mHeadsetRequiredToHearPasswordsAnnounced; Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case MSG_SHOW_PREVIEW: showKey(msg.arg1); break; case MSG_REMOVE_PREVIEW: mPreviewText.setVisibility(INVISIBLE); break; case MSG_REPEAT: if (repeatKey()) { Message repeat = Message.obtain(this, MSG_REPEAT); sendMessageDelayed(repeat, REPEAT_INTERVAL); } break; case MSG_LONGPRESS: openPopupIfRequired((MotionEvent) msg.obj); break; } } }; Handler mHandler; public KeyboardView(Context context, AttributeSet attrs) { this(context, attrs, com.android.internal.R.attr.keyboardViewStyle); Loading Loading @@ -380,11 +359,40 @@ public class KeyboardView extends View implements View.OnClickListener { mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); resetMultiTap(); initGestureDetector(); } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); initGestureDetector(); if (mHandler == null) { mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case MSG_SHOW_PREVIEW: showKey(msg.arg1); break; case MSG_REMOVE_PREVIEW: mPreviewText.setVisibility(INVISIBLE); break; case MSG_REPEAT: if (repeatKey()) { Message repeat = Message.obtain(this, MSG_REPEAT); sendMessageDelayed(repeat, REPEAT_INTERVAL); } break; case MSG_LONGPRESS: openPopupIfRequired((MotionEvent) msg.obj); break; } } }; } } private void initGestureDetector() { if (mGestureDetector == null) { mGestureDetector = new GestureDetector(getContext(), new GestureDetector.SimpleOnGestureListener() { @Override public boolean onFling(MotionEvent me1, MotionEvent me2, Loading Loading @@ -439,6 +447,7 @@ public class KeyboardView extends View implements View.OnClickListener { mGestureDetector.setIsLongpressEnabled(false); } } public void setOnKeyboardActionListener(OnKeyboardActionListener listener) { mKeyboardActionListener = listener; Loading core/java/android/widget/AdapterViewFlipper.java +11 −19 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.res.TypedArray; import android.os.Handler; import android.os.Message; import android.util.AttributeSet; import android.util.Log; Loading Loading @@ -112,7 +111,7 @@ public class AdapterViewFlipper extends AdapterViewAnimator { // home screen. Therefore, we register the receiver as the current // user not the one the context is for. getContext().registerReceiverAsUser(mReceiver, android.os.Process.myUserHandle(), filter, null, mHandler); filter, null, getHandler()); if (mAutoStart) { Loading Loading @@ -194,9 +193,8 @@ public class AdapterViewFlipper extends AdapterViewAnimator { // if the flipper is currently flipping automatically, and showNext() is called // we should we should make sure to reset the timer if (mRunning) { mHandler.removeMessages(FLIP_MSG); Message msg = mHandler.obtainMessage(FLIP_MSG); mHandler.sendMessageDelayed(msg, mFlipInterval); removeCallbacks(mFlipRunnable); postDelayed(mFlipRunnable, mFlipInterval); } super.showNext(); } Loading @@ -210,9 +208,8 @@ public class AdapterViewFlipper extends AdapterViewAnimator { // if the flipper is currently flipping automatically, and showPrevious() is called // we should we should make sure to reset the timer if (mRunning) { mHandler.removeMessages(FLIP_MSG); Message msg = mHandler.obtainMessage(FLIP_MSG); mHandler.sendMessageDelayed(msg, mFlipInterval); removeCallbacks(mFlipRunnable); postDelayed(mFlipRunnable, mFlipInterval); } super.showPrevious(); } Loading Loading @@ -241,10 +238,9 @@ public class AdapterViewFlipper extends AdapterViewAnimator { if (running != mRunning) { if (running) { showOnly(mWhichChild, flipNow); Message msg = mHandler.obtainMessage(FLIP_MSG); mHandler.sendMessageDelayed(msg, mFlipInterval); postDelayed(mFlipRunnable, mFlipInterval); } else { mHandler.removeMessages(FLIP_MSG); removeCallbacks(mFlipRunnable); } mRunning = running; } Loading Loading @@ -277,17 +273,13 @@ public class AdapterViewFlipper extends AdapterViewAnimator { return mAutoStart; } private final int FLIP_MSG = 1; private final Handler mHandler = new Handler() { private final Runnable mFlipRunnable = new Runnable() { @Override public void handleMessage(Message msg) { if (msg.what == FLIP_MSG) { public void run() { if (mRunning) { showNext(); } } } }; /** Loading core/java/android/widget/AnalogClock.java +1 −2 Original line number Diff line number Diff line Loading @@ -56,7 +56,6 @@ public class AnalogClock extends View { private boolean mAttached; private final Handler mHandler = new Handler(); private float mMinutes; private float mHour; private boolean mChanged; Loading Loading @@ -121,7 +120,7 @@ public class AnalogClock extends View { // home screen. Therefore, we register the receiver as the current // user not the one the context is for. getContext().registerReceiverAsUser(mIntentReceiver, android.os.Process.myUserHandle(), filter, null, mHandler); android.os.Process.myUserHandle(), filter, null, getHandler()); } // NOTE: It's safe to do these after registering the receiver since the receiver always runs Loading core/java/android/widget/Chronometer.java +7 −8 Original line number Diff line number Diff line Loading @@ -73,8 +73,6 @@ public class Chronometer extends TextView { private OnChronometerTickListener mOnChronometerTickListener; private StringBuilder mRecycle = new StringBuilder(8); private static final int TICK_WHAT = 2; /** * Initialize this Chronometer object. * Sets the base to the current time. Loading Loading @@ -259,20 +257,21 @@ public class Chronometer extends TextView { if (running) { updateText(SystemClock.elapsedRealtime()); dispatchChronometerTick(); mHandler.sendMessageDelayed(Message.obtain(mHandler, TICK_WHAT), 1000); postDelayed(mTickRunnable, 1000); } else { mHandler.removeMessages(TICK_WHAT); removeCallbacks(mTickRunnable); } mRunning = running; } } private Handler mHandler = new Handler() { public void handleMessage(Message m) { private final Runnable mTickRunnable = new Runnable() { @Override public void run() { if (mRunning) { updateText(SystemClock.elapsedRealtime()); dispatchChronometerTick(); sendMessageDelayed(Message.obtain(this, TICK_WHAT), 1000); postDelayed(mTickRunnable, 1000); } } }; Loading core/java/android/widget/DigitalClock.java +8 −6 Original line number Diff line number Diff line Loading @@ -60,18 +60,18 @@ public class DigitalClock extends TextView { if (mCalendar == null) { mCalendar = Calendar.getInstance(); } mFormatChangeObserver = new FormatChangeObserver(); getContext().getContentResolver().registerContentObserver( Settings.System.CONTENT_URI, true, mFormatChangeObserver); setFormat(); } @Override protected void onAttachedToWindow() { mTickerStopped = false; super.onAttachedToWindow(); mFormatChangeObserver = new FormatChangeObserver(); getContext().getContentResolver().registerContentObserver( Settings.System.CONTENT_URI, true, mFormatChangeObserver); setFormat(); mHandler = new Handler(); /** Loading @@ -95,6 +95,8 @@ public class DigitalClock extends TextView { protected void onDetachedFromWindow() { super.onDetachedFromWindow(); mTickerStopped = true; getContext().getContentResolver().unregisterContentObserver( mFormatChangeObserver); } private void setFormat() { Loading Loading
core/java/android/inputmethodservice/KeyboardView.java +149 −140 Original line number Diff line number Diff line Loading @@ -253,28 +253,7 @@ public class KeyboardView extends View implements View.OnClickListener { /** Whether the requirement of a headset to hear passwords if accessibility is enabled is announced. */ private boolean mHeadsetRequiredToHearPasswordsAnnounced; Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case MSG_SHOW_PREVIEW: showKey(msg.arg1); break; case MSG_REMOVE_PREVIEW: mPreviewText.setVisibility(INVISIBLE); break; case MSG_REPEAT: if (repeatKey()) { Message repeat = Message.obtain(this, MSG_REPEAT); sendMessageDelayed(repeat, REPEAT_INTERVAL); } break; case MSG_LONGPRESS: openPopupIfRequired((MotionEvent) msg.obj); break; } } }; Handler mHandler; public KeyboardView(Context context, AttributeSet attrs) { this(context, attrs, com.android.internal.R.attr.keyboardViewStyle); Loading Loading @@ -380,11 +359,40 @@ public class KeyboardView extends View implements View.OnClickListener { mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); resetMultiTap(); initGestureDetector(); } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); initGestureDetector(); if (mHandler == null) { mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case MSG_SHOW_PREVIEW: showKey(msg.arg1); break; case MSG_REMOVE_PREVIEW: mPreviewText.setVisibility(INVISIBLE); break; case MSG_REPEAT: if (repeatKey()) { Message repeat = Message.obtain(this, MSG_REPEAT); sendMessageDelayed(repeat, REPEAT_INTERVAL); } break; case MSG_LONGPRESS: openPopupIfRequired((MotionEvent) msg.obj); break; } } }; } } private void initGestureDetector() { if (mGestureDetector == null) { mGestureDetector = new GestureDetector(getContext(), new GestureDetector.SimpleOnGestureListener() { @Override public boolean onFling(MotionEvent me1, MotionEvent me2, Loading Loading @@ -439,6 +447,7 @@ public class KeyboardView extends View implements View.OnClickListener { mGestureDetector.setIsLongpressEnabled(false); } } public void setOnKeyboardActionListener(OnKeyboardActionListener listener) { mKeyboardActionListener = listener; Loading
core/java/android/widget/AdapterViewFlipper.java +11 −19 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.res.TypedArray; import android.os.Handler; import android.os.Message; import android.util.AttributeSet; import android.util.Log; Loading Loading @@ -112,7 +111,7 @@ public class AdapterViewFlipper extends AdapterViewAnimator { // home screen. Therefore, we register the receiver as the current // user not the one the context is for. getContext().registerReceiverAsUser(mReceiver, android.os.Process.myUserHandle(), filter, null, mHandler); filter, null, getHandler()); if (mAutoStart) { Loading Loading @@ -194,9 +193,8 @@ public class AdapterViewFlipper extends AdapterViewAnimator { // if the flipper is currently flipping automatically, and showNext() is called // we should we should make sure to reset the timer if (mRunning) { mHandler.removeMessages(FLIP_MSG); Message msg = mHandler.obtainMessage(FLIP_MSG); mHandler.sendMessageDelayed(msg, mFlipInterval); removeCallbacks(mFlipRunnable); postDelayed(mFlipRunnable, mFlipInterval); } super.showNext(); } Loading @@ -210,9 +208,8 @@ public class AdapterViewFlipper extends AdapterViewAnimator { // if the flipper is currently flipping automatically, and showPrevious() is called // we should we should make sure to reset the timer if (mRunning) { mHandler.removeMessages(FLIP_MSG); Message msg = mHandler.obtainMessage(FLIP_MSG); mHandler.sendMessageDelayed(msg, mFlipInterval); removeCallbacks(mFlipRunnable); postDelayed(mFlipRunnable, mFlipInterval); } super.showPrevious(); } Loading Loading @@ -241,10 +238,9 @@ public class AdapterViewFlipper extends AdapterViewAnimator { if (running != mRunning) { if (running) { showOnly(mWhichChild, flipNow); Message msg = mHandler.obtainMessage(FLIP_MSG); mHandler.sendMessageDelayed(msg, mFlipInterval); postDelayed(mFlipRunnable, mFlipInterval); } else { mHandler.removeMessages(FLIP_MSG); removeCallbacks(mFlipRunnable); } mRunning = running; } Loading Loading @@ -277,17 +273,13 @@ public class AdapterViewFlipper extends AdapterViewAnimator { return mAutoStart; } private final int FLIP_MSG = 1; private final Handler mHandler = new Handler() { private final Runnable mFlipRunnable = new Runnable() { @Override public void handleMessage(Message msg) { if (msg.what == FLIP_MSG) { public void run() { if (mRunning) { showNext(); } } } }; /** Loading
core/java/android/widget/AnalogClock.java +1 −2 Original line number Diff line number Diff line Loading @@ -56,7 +56,6 @@ public class AnalogClock extends View { private boolean mAttached; private final Handler mHandler = new Handler(); private float mMinutes; private float mHour; private boolean mChanged; Loading Loading @@ -121,7 +120,7 @@ public class AnalogClock extends View { // home screen. Therefore, we register the receiver as the current // user not the one the context is for. getContext().registerReceiverAsUser(mIntentReceiver, android.os.Process.myUserHandle(), filter, null, mHandler); android.os.Process.myUserHandle(), filter, null, getHandler()); } // NOTE: It's safe to do these after registering the receiver since the receiver always runs Loading
core/java/android/widget/Chronometer.java +7 −8 Original line number Diff line number Diff line Loading @@ -73,8 +73,6 @@ public class Chronometer extends TextView { private OnChronometerTickListener mOnChronometerTickListener; private StringBuilder mRecycle = new StringBuilder(8); private static final int TICK_WHAT = 2; /** * Initialize this Chronometer object. * Sets the base to the current time. Loading Loading @@ -259,20 +257,21 @@ public class Chronometer extends TextView { if (running) { updateText(SystemClock.elapsedRealtime()); dispatchChronometerTick(); mHandler.sendMessageDelayed(Message.obtain(mHandler, TICK_WHAT), 1000); postDelayed(mTickRunnable, 1000); } else { mHandler.removeMessages(TICK_WHAT); removeCallbacks(mTickRunnable); } mRunning = running; } } private Handler mHandler = new Handler() { public void handleMessage(Message m) { private final Runnable mTickRunnable = new Runnable() { @Override public void run() { if (mRunning) { updateText(SystemClock.elapsedRealtime()); dispatchChronometerTick(); sendMessageDelayed(Message.obtain(this, TICK_WHAT), 1000); postDelayed(mTickRunnable, 1000); } } }; Loading
core/java/android/widget/DigitalClock.java +8 −6 Original line number Diff line number Diff line Loading @@ -60,18 +60,18 @@ public class DigitalClock extends TextView { if (mCalendar == null) { mCalendar = Calendar.getInstance(); } mFormatChangeObserver = new FormatChangeObserver(); getContext().getContentResolver().registerContentObserver( Settings.System.CONTENT_URI, true, mFormatChangeObserver); setFormat(); } @Override protected void onAttachedToWindow() { mTickerStopped = false; super.onAttachedToWindow(); mFormatChangeObserver = new FormatChangeObserver(); getContext().getContentResolver().registerContentObserver( Settings.System.CONTENT_URI, true, mFormatChangeObserver); setFormat(); mHandler = new Handler(); /** Loading @@ -95,6 +95,8 @@ public class DigitalClock extends TextView { protected void onDetachedFromWindow() { super.onDetachedFromWindow(); mTickerStopped = true; getContext().getContentResolver().unregisterContentObserver( mFormatChangeObserver); } private void setFormat() { Loading