Register / Unregister UI listener in onResume / onPause.

This can cause the UI listener to be called when the UI is not meant to
be interacted with otherwise.

Bug: 226099985
Test: atest CtsSafetyCenterTestCases
Change-Id: I51ba547c140fc9eb28aacdd7e7dcffc2cbde0eab
diff --git a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyCenterDashboardFragment.java b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyCenterDashboardFragment.java
index 172a7c4..7179884 100644
--- a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyCenterDashboardFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyCenterDashboardFragment.java
@@ -18,6 +18,7 @@
 
 import static java.util.Objects.requireNonNull;
 
+import android.content.Context;
 import android.os.Bundle;
 import android.safetycenter.SafetyCenterData;
 import android.safetycenter.SafetyCenterEntryOrGroup;
@@ -51,7 +52,6 @@
     private PreferenceGroup mIssuesGroup;
     private PreferenceGroup mEntriesGroup;
     private PreferenceGroup mStaticEntriesGroup;
-
     private SafetyCenterViewModel mViewModel;
 
     @Override
@@ -81,28 +81,34 @@
     private void renderSafetyCenterData(@Nullable SafetyCenterData data) {
         if (data == null) return;
 
-        Log.i(TAG, String.format("renderSafetyCenterData called with: %s", data.toString()));
+        Log.i(TAG, String.format("renderSafetyCenterData called with: %s", data));
+
+        Context context = getContext();
+        if (context == null) {
+            return;
+        }
 
         mSafetyStatusPreference.setSafetyStatus(data.getStatus());
 
         // TODO(b/208212820): Only update entries that have changed since last
         // update, rather than deleting and re-adding all.
 
-        updateIssues(data.getIssues());
-        updateSafetyEntries(data.getEntriesOrGroups());
-        updateStaticSafetyEntries(data.getStaticEntryGroups());
+        updateIssues(context, data.getIssues());
+        updateSafetyEntries(context, data.getEntriesOrGroups());
+        updateStaticSafetyEntries(context, data.getStaticEntryGroups());
     }
 
-    private void updateIssues(List<SafetyCenterIssue> issues) {
+    private void updateIssues(Context context, List<SafetyCenterIssue> issues) {
         mIssuesGroup.removeAll();
 
         issues.stream()
-                .map(issue -> new IssueCardPreference(getContext(), issue))
+                .map(issue -> new IssueCardPreference(context, issue))
                 .forEachOrdered(mIssuesGroup::addPreference);
     }
 
     // TODO(b/208212820): Add groups and move to separate controller
-    private void updateSafetyEntries(List<SafetyCenterEntryOrGroup> entriesOrGroups) {
+    private void updateSafetyEntries(Context context,
+            List<SafetyCenterEntryOrGroup> entriesOrGroups) {
         mEntriesGroup.removeAll();
 
         entriesOrGroups.stream()
@@ -110,16 +116,17 @@
                         entryOrGroup.getEntry() != null
                                 ? Stream.of(entryOrGroup.getEntry())
                                 : entryOrGroup.getEntryGroup().getEntries().stream())
-                .map(entry -> new SafetyEntryPreference(getContext(), entry))
+                .map(entry -> new SafetyEntryPreference(context, entry))
                 .forEachOrdered(mEntriesGroup::addPreference);
     }
 
-    private void updateStaticSafetyEntries(List<SafetyCenterStaticEntryGroup> staticEntryGroups) {
+    private void updateStaticSafetyEntries(Context context,
+            List<SafetyCenterStaticEntryGroup> staticEntryGroups) {
         mStaticEntriesGroup.removeAll();
 
         staticEntryGroups.stream()
                 .flatMap(group -> group.getStaticEntries().stream())
-                .map(entry -> new StaticSafetyEntryPreference(getContext(), entry))
+                .map(entry -> new StaticSafetyEntryPreference(context, entry))
                 .forEachOrdered(mStaticEntriesGroup::addPreference);
     }