Pushing initialization of phone number formatter to background thread

Bug: 3228687
Change-Id: Ib797383b2af3608876956ed365026b1522bc0f6c
diff --git a/src/com/android/contacts/ContactsApplication.java b/src/com/android/contacts/ContactsApplication.java
index 1e5c14e..aa1397a 100644
--- a/src/com/android/contacts/ContactsApplication.java
+++ b/src/com/android/contacts/ContactsApplication.java
@@ -16,16 +16,13 @@
 
 package com.android.contacts;
 
+import com.android.contacts.model.AccountTypes;
+
 import android.app.Application;
 import android.content.Context;
 import android.os.StrictMode;
 import android.preference.PreferenceManager;
 
-import java.util.Locale;
-
-import com.android.contacts.model.AccountTypes;
-import com.google.i18n.phonenumbers.PhoneNumberUtil;
-
 public final class ContactsApplication extends Application {
 
     @Override
@@ -35,7 +32,6 @@
         // Priming caches to placate the StrictMode police
         Context context = getApplicationContext();
         PreferenceManager.getDefaultSharedPreferences(context);
-        PhoneNumberUtil.getInstance().getAsYouTypeFormatter(Locale.getDefault().getCountry());
         AccountTypes.getInstance(context);
 
         StrictMode.setThreadPolicy(
diff --git a/src/com/android/contacts/model/AccountTypes.java b/src/com/android/contacts/model/AccountTypes.java
index 92ffba2..bb3b774 100644
--- a/src/com/android/contacts/model/AccountTypes.java
+++ b/src/com/android/contacts/model/AccountTypes.java
@@ -20,6 +20,7 @@
 import com.google.android.collect.Lists;
 import com.google.android.collect.Maps;
 import com.google.android.collect.Sets;
+import com.google.i18n.phonenumbers.PhoneNumberUtil;
 
 import android.accounts.Account;
 import android.accounts.AccountManager;
@@ -47,6 +48,7 @@
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Locale;
 import java.util.concurrent.CountDownLatch;
 
 /**
@@ -334,6 +336,11 @@
 
         Collections.sort(mAccounts, ACCOUNT_COMPARATOR);
         Collections.sort(mWritableAccounts, ACCOUNT_COMPARATOR);
+
+        // The UI will need a phone number formatter.  We can preload meta data for the
+        // current locale to prevent a delay later on.
+        PhoneNumberUtil.getInstance().getAsYouTypeFormatter(Locale.getDefault().getCountry());
+
         if (mInitializationLatch != null) {
             mInitializationLatch.countDown();
             mInitializationLatch = null;