Fix null pointer exception when surveys are turned off
In some conditions the survey provider could be null on download completion which could lead to a NPE. This has been addressed by not requiring an instance for the removal of the receiver. Test: RunSettingsRoboTests (master) Bug: 33707203 Change-Id: Id1ab1a24c697fed8e4dd259682a088b50c35f38a Merged-In: Icfb545697f24172db734dd7dad421796edf68186
This commit is contained in:
@@ -77,9 +77,7 @@ public abstract class InstrumentedFragment extends PreferenceFragment {
|
||||
public void onPause() {
|
||||
Activity activity = getActivity();
|
||||
if (mReceiver != null && activity != null) {
|
||||
SurveyFeatureProvider provider =
|
||||
FeatureFactory.getFactory(activity).getSurveyFeatureProvider(activity);
|
||||
provider.unregisterReceiver(activity, mReceiver);
|
||||
SurveyFeatureProvider.unregisterReceiver(activity, mReceiver);
|
||||
mReceiver = null;
|
||||
}
|
||||
|
||||
|
@@ -66,9 +66,7 @@ public abstract class InstrumentedPreferenceFragment extends PreferenceFragment
|
||||
public void onPause() {
|
||||
Activity activity = getActivity();
|
||||
if (mReceiver != null && activity != null) {
|
||||
SurveyFeatureProvider provider =
|
||||
FeatureFactory.getFactory(activity).getSurveyFeatureProvider(activity);
|
||||
provider.unregisterReceiver(activity, mReceiver);
|
||||
SurveyFeatureProvider.unregisterReceiver(activity, mReceiver);
|
||||
mReceiver = null;
|
||||
}
|
||||
|
||||
|
@@ -20,6 +20,7 @@ import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.IntentFilter;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
|
||||
/**
|
||||
* An interface for classes wishing to provide the ability to serve surveys to implement.
|
||||
@@ -81,5 +82,11 @@ public interface SurveyFeatureProvider {
|
||||
* after a call to {@link #createAndRegisterReceiver(Activity)}.
|
||||
* @param activity The activity that was used to register the BroadcastReceiver.
|
||||
*/
|
||||
void unregisterReceiver(Activity activity, BroadcastReceiver receiver);
|
||||
static void unregisterReceiver(Activity activity, BroadcastReceiver receiver) {
|
||||
if (activity == null) {
|
||||
throw new IllegalStateException("Cannot unregister receiver if activity is null");
|
||||
}
|
||||
|
||||
LocalBroadcastManager.getInstance(activity).unregisterReceiver(receiver);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user