Loading src/com/android/contacts/dialpad/DialpadFragment.java +20 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,7 @@ import com.android.contacts.SpecialCharSequenceMgr; import com.android.contacts.activities.DialtactsActivity; import com.android.contacts.util.Constants; import com.android.contacts.util.PhoneNumberFormatter; import com.android.contacts.util.StopWatch; import com.android.internal.telephony.ITelephony; import com.android.phone.CallLogAsync; import com.android.phone.HapticFeedback; Loading Loading @@ -468,17 +469,25 @@ public class DialpadFragment extends Fragment public void onResume() { super.onResume(); final StopWatch stopWatch = StopWatch.start("Dialpad.onResume"); // Query the last dialed number. Do it first because hitting // the DB is 'slow'. This call is asynchronous. queryLastOutgoingCall(); stopWatch.lap("qloc"); // retrieve the DTMF tone play back setting. mDTMFToneEnabled = Settings.System.getInt(getActivity().getContentResolver(), Settings.System.DTMF_TONE_WHEN_DIALING, 1) == 1; stopWatch.lap("dtwd"); // Retrieve the haptic feedback setting. mHaptic.checkSystemSetting(); stopWatch.lap("hptc"); // if the mToneGenerator creation fails, just continue without it. It is // a local audio signal, and is not as important as the dtmf tone itself. synchronized (mToneGeneratorLock) { Loading @@ -491,6 +500,7 @@ public class DialpadFragment extends Fragment } } } stopWatch.lap("tg"); // Prevent unnecessary confusion. Reset the press count anyway. mDialpadPressCount = 0; Loading @@ -501,6 +511,8 @@ public class DialpadFragment extends Fragment fillDigitsIfNecessary(parent.getIntent()); } stopWatch.lap("fdin"); // While we're in the foreground, listen for phone state changes, // purely so that we can take down the "dialpad chooser" if the // phone becomes idle while the chooser UI is visible. Loading @@ -508,6 +520,8 @@ public class DialpadFragment extends Fragment (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE); telephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE); stopWatch.lap("tm"); // Potentially show hint text in the mDigits field when the user // hasn't typed any digits yet. (If there's already an active call, // this hint text will remind the user that he's about to add a new Loading @@ -531,7 +545,13 @@ public class DialpadFragment extends Fragment showDialpadChooser(false); } stopWatch.lap("hnt"); updateDialAndDeleteButtonEnabledState(); stopWatch.lap("bes"); stopWatch.stopAndLog(TAG, 50); } @Override Loading src/com/android/contacts/util/StopWatch.java 0 → 100644 +85 −0 Original line number Diff line number Diff line /* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.contacts.util; import com.google.android.collect.Lists; import android.util.Log; import java.util.ArrayList; /** * A {@link StopWatch} records start, laps and stop, and print them to logcat. */ public class StopWatch { private final String mLabel; private final ArrayList<Long> mTimes = Lists.newArrayList(); private final ArrayList<String> mLapLabels = Lists.newArrayList(); private StopWatch(String label) { mLabel = label; lap(""); } /** * Create a new instance and start it. */ public static StopWatch start(String label) { return new StopWatch(label); } /** * Record a lap. */ public void lap(String lapLabel) { mTimes.add(System.currentTimeMillis()); mLapLabels.add(lapLabel); } /** * Stop it and log the result, if the total time >= {@code timeThresholdToLog}. */ public void stopAndLog(String TAG, int timeThresholdToLog) { lap(""); final long start = mTimes.get(0); final long stop = mTimes.get(mTimes.size() - 1); final long total = stop - start; if (total < timeThresholdToLog) return; final StringBuilder sb = new StringBuilder(); sb.append(mLabel); sb.append(","); sb.append(total); sb.append(": "); long last = start; for (int i = 1; i < mTimes.size(); i++) { final long current = mTimes.get(i); sb.append(mLapLabels.get(i)); sb.append(","); sb.append((current - last)); sb.append(" "); last = current; } Log.v(TAG, sb.toString()); } } Loading
src/com/android/contacts/dialpad/DialpadFragment.java +20 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,7 @@ import com.android.contacts.SpecialCharSequenceMgr; import com.android.contacts.activities.DialtactsActivity; import com.android.contacts.util.Constants; import com.android.contacts.util.PhoneNumberFormatter; import com.android.contacts.util.StopWatch; import com.android.internal.telephony.ITelephony; import com.android.phone.CallLogAsync; import com.android.phone.HapticFeedback; Loading Loading @@ -468,17 +469,25 @@ public class DialpadFragment extends Fragment public void onResume() { super.onResume(); final StopWatch stopWatch = StopWatch.start("Dialpad.onResume"); // Query the last dialed number. Do it first because hitting // the DB is 'slow'. This call is asynchronous. queryLastOutgoingCall(); stopWatch.lap("qloc"); // retrieve the DTMF tone play back setting. mDTMFToneEnabled = Settings.System.getInt(getActivity().getContentResolver(), Settings.System.DTMF_TONE_WHEN_DIALING, 1) == 1; stopWatch.lap("dtwd"); // Retrieve the haptic feedback setting. mHaptic.checkSystemSetting(); stopWatch.lap("hptc"); // if the mToneGenerator creation fails, just continue without it. It is // a local audio signal, and is not as important as the dtmf tone itself. synchronized (mToneGeneratorLock) { Loading @@ -491,6 +500,7 @@ public class DialpadFragment extends Fragment } } } stopWatch.lap("tg"); // Prevent unnecessary confusion. Reset the press count anyway. mDialpadPressCount = 0; Loading @@ -501,6 +511,8 @@ public class DialpadFragment extends Fragment fillDigitsIfNecessary(parent.getIntent()); } stopWatch.lap("fdin"); // While we're in the foreground, listen for phone state changes, // purely so that we can take down the "dialpad chooser" if the // phone becomes idle while the chooser UI is visible. Loading @@ -508,6 +520,8 @@ public class DialpadFragment extends Fragment (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE); telephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE); stopWatch.lap("tm"); // Potentially show hint text in the mDigits field when the user // hasn't typed any digits yet. (If there's already an active call, // this hint text will remind the user that he's about to add a new Loading @@ -531,7 +545,13 @@ public class DialpadFragment extends Fragment showDialpadChooser(false); } stopWatch.lap("hnt"); updateDialAndDeleteButtonEnabledState(); stopWatch.lap("bes"); stopWatch.stopAndLog(TAG, 50); } @Override Loading
src/com/android/contacts/util/StopWatch.java 0 → 100644 +85 −0 Original line number Diff line number Diff line /* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.contacts.util; import com.google.android.collect.Lists; import android.util.Log; import java.util.ArrayList; /** * A {@link StopWatch} records start, laps and stop, and print them to logcat. */ public class StopWatch { private final String mLabel; private final ArrayList<Long> mTimes = Lists.newArrayList(); private final ArrayList<String> mLapLabels = Lists.newArrayList(); private StopWatch(String label) { mLabel = label; lap(""); } /** * Create a new instance and start it. */ public static StopWatch start(String label) { return new StopWatch(label); } /** * Record a lap. */ public void lap(String lapLabel) { mTimes.add(System.currentTimeMillis()); mLapLabels.add(lapLabel); } /** * Stop it and log the result, if the total time >= {@code timeThresholdToLog}. */ public void stopAndLog(String TAG, int timeThresholdToLog) { lap(""); final long start = mTimes.get(0); final long stop = mTimes.get(mTimes.size() - 1); final long total = stop - start; if (total < timeThresholdToLog) return; final StringBuilder sb = new StringBuilder(); sb.append(mLabel); sb.append(","); sb.append(total); sb.append(": "); long last = start; for (int i = 1; i < mTimes.size(); i++) { final long current = mTimes.get(i); sb.append(mLapLabels.get(i)); sb.append(","); sb.append((current - last)); sb.append(" "); last = current; } Log.v(TAG, sb.toString()); } }