diff --git a/Android.bp b/Android.bp
index 1acba28..86af8d9 100644
--- a/Android.bp
+++ b/Android.bp
@@ -72,7 +72,7 @@
         "setupcompat",
         "setupdesign",
         "androidx.lifecycle_lifecycle-runtime",
-        "androidx.lifecycle_lifecycle-extensions",
+        "androidx.lifecycle_lifecycle-viewmodel",
         "guava",
         "jsr305",
         "net-utils-framework-common",
diff --git a/src/com/android/settings/applications/intentpicker/ProgressDialogFragment.java b/src/com/android/settings/applications/intentpicker/ProgressDialogFragment.java
index e55d904..c8f4c0b 100644
--- a/src/com/android/settings/applications/intentpicker/ProgressDialogFragment.java
+++ b/src/com/android/settings/applications/intentpicker/ProgressDialogFragment.java
@@ -35,7 +35,7 @@
 import androidx.annotation.NonNull;
 import androidx.appcompat.app.AlertDialog;
 import androidx.fragment.app.FragmentManager;
-import androidx.lifecycle.ViewModelProviders;
+import androidx.lifecycle.ViewModelProvider;
 
 import com.android.settings.R;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
@@ -62,7 +62,7 @@
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        mViewModel = ViewModelProviders.of(this.getActivity()).get(SupportedLinkViewModel.class);
+        mViewModel = new ViewModelProvider(this.getActivity()).get(SupportedLinkViewModel.class);
     }
 
     @Override
diff --git a/src/com/android/settings/applications/intentpicker/SupportedLinksDialogFragment.java b/src/com/android/settings/applications/intentpicker/SupportedLinksDialogFragment.java
index db93df2..dd5b746 100644
--- a/src/com/android/settings/applications/intentpicker/SupportedLinksDialogFragment.java
+++ b/src/com/android/settings/applications/intentpicker/SupportedLinksDialogFragment.java
@@ -28,7 +28,7 @@
 import androidx.appcompat.app.AlertDialog;
 import androidx.fragment.app.Fragment;
 import androidx.fragment.app.FragmentManager;
-import androidx.lifecycle.ViewModelProviders;
+import androidx.lifecycle.ViewModelProvider;
 
 import com.android.settings.R;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
@@ -50,7 +50,7 @@
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         mPackage = getArguments().getString(AppLaunchSettings.APP_PACKAGE_KEY);
-        mViewModel = ViewModelProviders.of(this.getActivity()).get(SupportedLinkViewModel.class);
+        mViewModel = new ViewModelProvider(this.getActivity()).get(SupportedLinkViewModel.class);
         mSupportedLinkWrapperList = mViewModel.getSupportedLinkWrapperList();
     }
 
diff --git a/src/com/android/settings/tts/TextToSpeechSettings.java b/src/com/android/settings/tts/TextToSpeechSettings.java
index 6db5710..621b222 100644
--- a/src/com/android/settings/tts/TextToSpeechSettings.java
+++ b/src/com/android/settings/tts/TextToSpeechSettings.java
@@ -38,7 +38,7 @@
 import android.util.Pair;
 
 import androidx.appcompat.app.AlertDialog;
-import androidx.lifecycle.ViewModelProviders;
+import androidx.lifecycle.ViewModelProvider;
 import androidx.preference.ListPreference;
 import androidx.preference.Preference;
 
@@ -208,7 +208,7 @@
         }
 
         final TextToSpeechViewModel ttsViewModel =
-                ViewModelProviders.of(this).get(TextToSpeechViewModel.class);
+                new ViewModelProvider(this).get(TextToSpeechViewModel.class);
         Pair<TextToSpeech, Boolean> ttsAndNew = ttsViewModel.getTtsAndWhetherNew(mInitListener);
         mTts = ttsAndNew.first;
         // If the TTS object is not newly created, we need to run the setup on the settings side to
@@ -237,7 +237,7 @@
         }
         if (!mTts.getDefaultEngine().equals(mTts.getCurrentEngine())) {
             final TextToSpeechViewModel ttsViewModel =
-                    ViewModelProviders.of(this).get(TextToSpeechViewModel.class);
+                    new ViewModelProvider(this).get(TextToSpeechViewModel.class);
             try {
                 // If the current engine isn't the default engine shut down the current engine in
                 // preparation for creating the new engine.
diff --git a/src/com/android/settings/wifi/dpp/WifiDppAddDeviceFragment.java b/src/com/android/settings/wifi/dpp/WifiDppAddDeviceFragment.java
index 17475df..5d393ef 100644
--- a/src/com/android/settings/wifi/dpp/WifiDppAddDeviceFragment.java
+++ b/src/com/android/settings/wifi/dpp/WifiDppAddDeviceFragment.java
@@ -37,7 +37,7 @@
 import android.widget.Button;
 import android.widget.ImageView;
 
-import androidx.lifecycle.ViewModelProviders;
+import androidx.lifecycle.ViewModelProvider;
 
 import com.android.settings.R;
 
@@ -74,7 +74,7 @@
 
         @Override
         public void onFailure(int code, String ssid, SparseArray<int[]> channelListArray,
-                int[] operatingClassArray) {
+                              int[] operatingClassArray) {
             Log.d(TAG, "EasyConnectConfiguratorStatusCallback.onFailure: " + code);
             if (!TextUtils.isEmpty(ssid)) {
                 Log.d(TAG, "Tried SSID: " + ssid);
@@ -123,7 +123,7 @@
     }
 
     private Intent getResultIntent(int code, String ssid, SparseArray<int[]> channelListArray,
-            int[] operatingClassArray) {
+                                   int[] operatingClassArray) {
         Intent intent = new Intent();
         intent.putExtra(EXTRA_EASY_CONNECT_ERROR_CODE, code);
 
@@ -195,7 +195,7 @@
                 }
 
                 if (code == mLatestStatusCode) {
-                    throw(new IllegalStateException("Tried restarting EasyConnectSession but still"
+                    throw (new IllegalStateException("Tried restarting EasyConnectSession but still"
                             + "receiving EASY_CONNECT_EVENT_FAILURE_BUSY"));
                 }
 
@@ -220,7 +220,7 @@
                 break;
 
             case EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK:
-                throw(new IllegalStateException("Wi-Fi DPP configurator used a non-PSK/non-SAE"
+                throw (new IllegalStateException("Wi-Fi DPP configurator used a non-PSK/non-SAE"
                         + "network to handshake"));
 
             case EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_CANNOT_FIND_NETWORK:
@@ -238,7 +238,7 @@
                 break;
 
             default:
-                throw(new IllegalStateException("Unexpected Wi-Fi DPP error"));
+                throw (new IllegalStateException("Unexpected Wi-Fi DPP error"));
         }
 
         setHeaderTitle(R.string.wifi_dpp_could_not_add_device);
@@ -297,7 +297,7 @@
         }
 
         final WifiDppInitiatorViewModel model =
-                ViewModelProviders.of(this).get(WifiDppInitiatorViewModel.class);
+                new ViewModelProvider(this).get(WifiDppInitiatorViewModel.class);
 
         model.getStatusCode().observe(this, statusCode -> {
             // After configuration change, observe callback will be triggered,
@@ -318,7 +318,7 @@
 
     @Override
     public final View onCreateView(LayoutInflater inflater, ViewGroup container,
-            Bundle savedInstanceState) {
+                                   Bundle savedInstanceState) {
         return inflater.inflate(R.layout.wifi_dpp_add_device_fragment, container,
                 /* attachToRoot */ false);
     }
@@ -343,7 +343,7 @@
 
         mChooseDifferentNetwork = view.findViewById(R.id.choose_different_network);
         mChooseDifferentNetwork.setOnClickListener(v ->
-            mClickChooseDifferentNetworkListener.onClickChooseDifferentNetwork()
+                mClickChooseDifferentNetworkListener.onClickChooseDifferentNetwork()
         );
 
         mLeftButton.setText(getContext(), R.string.cancel);
@@ -394,7 +394,7 @@
         final int networkId =
                 ((WifiDppConfiguratorActivity) getActivity()).getWifiNetworkConfig().getNetworkId();
         final WifiDppInitiatorViewModel model =
-                ViewModelProviders.of(this).get(WifiDppInitiatorViewModel.class);
+                new ViewModelProvider(this).get(WifiDppInitiatorViewModel.class);
 
         model.startEasyConnectAsConfiguratorInitiator(qrCode, networkId);
     }
@@ -403,6 +403,7 @@
     public interface OnClickChooseDifferentNetworkListener {
         void onClickChooseDifferentNetwork();
     }
+
     private OnClickChooseDifferentNetworkListener mClickChooseDifferentNetworkListener;
 
     @Override
@@ -422,7 +423,7 @@
     // Check is Easy Connect handshaking or not
     private boolean isEasyConnectHandshaking() {
         final WifiDppInitiatorViewModel model =
-                ViewModelProviders.of(this).get(WifiDppInitiatorViewModel.class);
+                new ViewModelProvider(this).get(WifiDppInitiatorViewModel.class);
 
         return model.isWifiDppHandshaking();
     }
diff --git a/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragment.java b/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragment.java
index 3fd6c45..872c61a 100644
--- a/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragment.java
+++ b/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragment.java
@@ -53,7 +53,7 @@
 import androidx.annotation.StringRes;
 import androidx.annotation.UiThread;
 import androidx.annotation.VisibleForTesting;
-import androidx.lifecycle.ViewModelProviders;
+import androidx.lifecycle.ViewModelProvider;
 
 import com.android.settings.R;
 import com.android.settings.overlay.FeatureFactory;
@@ -298,7 +298,7 @@
         }
 
         final WifiDppInitiatorViewModel model =
-                ViewModelProviders.of(this).get(WifiDppInitiatorViewModel.class);
+                new ViewModelProvider(this).get(WifiDppInitiatorViewModel.class);
 
         model.getEnrolleeSuccessNetworkId().observe(this, networkId -> {
             // After configuration change, observe callback will be triggered,
@@ -719,7 +719,7 @@
 
     private void startWifiDppEnrolleeInitiator(WifiQrCode wifiQrCode) {
         final WifiDppInitiatorViewModel model =
-                ViewModelProviders.of(this).get(WifiDppInitiatorViewModel.class);
+                new ViewModelProvider(this).get(WifiDppInitiatorViewModel.class);
 
         model.startEasyConnectAsEnrolleeInitiator(wifiQrCode.getQrCode());
     }
@@ -765,7 +765,7 @@
     // Check is Easy Connect handshaking or not
     private boolean isWifiDppHandshaking() {
         final WifiDppInitiatorViewModel model =
-                ViewModelProviders.of(this).get(WifiDppInitiatorViewModel.class);
+                new ViewModelProvider(this).get(WifiDppInitiatorViewModel.class);
 
         return model.isWifiDppHandshaking();
     }
diff --git a/tests/robotests/Android.bp b/tests/robotests/Android.bp
index 26c4d19..9cc8439 100644
--- a/tests/robotests/Android.bp
+++ b/tests/robotests/Android.bp
@@ -39,7 +39,6 @@
         "setupcompat",
         "setupdesign",
         "androidx.lifecycle_lifecycle-runtime",
-        "androidx.lifecycle_lifecycle-extensions",
         "androidx.test.core",
         "androidx.test.runner",
         "androidx.test.ext.junit",
