Do not remove handlers for loaders.
In rare situations we might trigger a force-load if the handler is
stopped.
Change-Id: I103744654805dcbe0744b09b5be9da1f505817d3
Fixes: 29581798
diff --git a/core/java/android/print/PrintServiceRecommendationsLoader.java b/core/java/android/print/PrintServiceRecommendationsLoader.java
index bb5d065..c6a4d51 100644
--- a/core/java/android/print/PrintServiceRecommendationsLoader.java
+++ b/core/java/android/print/PrintServiceRecommendationsLoader.java
@@ -36,7 +36,7 @@
private final @NonNull PrintManager mPrintManager;
/** Handler to sequentialize the delivery of the results to the main thread */
- private final Handler mHandler;
+ private final @NonNull Handler mHandler;
/** Listens for updates to the data from the platform */
private PrintManager.PrintServiceRecommendationsChangeListener mListener;
@@ -90,9 +90,7 @@
mListener = null;
}
- if (mHandler != null) {
- mHandler.removeMessages(0);
- }
+ mHandler.removeMessages(0);
}
@Override
diff --git a/core/java/android/print/PrintServicesLoader.java b/core/java/android/print/PrintServicesLoader.java
index 60d7d66..4c9a69a 100644
--- a/core/java/android/print/PrintServicesLoader.java
+++ b/core/java/android/print/PrintServicesLoader.java
@@ -39,7 +39,7 @@
private final @NonNull PrintManager mPrintManager;
/** Handler to sequentialize the delivery of the results to the main thread */
- private Handler mHandler;
+ private final @NonNull Handler mHandler;
/** Listens for updates to the data from the platform */
private PrintManager.PrintServicesChangeListener mListener;
@@ -54,6 +54,7 @@
public PrintServicesLoader(@NonNull PrintManager printManager, @NonNull Context context,
int selectionFlags) {
super(Preconditions.checkNotNull(context));
+ mHandler = new MyHandler();
mPrintManager = Preconditions.checkNotNull(printManager);
mSelectionFlags = Preconditions.checkFlagsArgument(selectionFlags,
PrintManager.ALL_SERVICES);
@@ -75,7 +76,6 @@
@Override
protected void onStartLoading() {
- mHandler = new MyHandler();
mListener = new PrintManager.PrintServicesChangeListener() {
@Override public void onPrintServicesChanged() {
queueNewResult();
@@ -95,10 +95,7 @@
mListener = null;
}
- if (mHandler != null) {
- mHandler.removeMessages(0);
- mHandler = null;
- }
+ mHandler.removeMessages(0);
}
@Override
@@ -119,8 +116,6 @@
@Override
public void handleMessage(Message msg) {
- super.handleMessage(msg);
-
if (isStarted()) {
deliverResult((List<PrintServiceInfo>) msg.obj);
}