diff options
| author | 2016-07-01 15:41:59 +0000 | |
|---|---|---|
| committer | 2016-07-01 15:42:00 +0000 | |
| commit | 4b24c48e237d09b77d1dd8c755c47b7cde36ee3a (patch) | |
| tree | f96b75102737aa4b784a5e731cad521bc786574b | |
| parent | c9099d1a84983d8ce1355aa58c22c60a157691e6 (diff) | |
| parent | 2eae8eb7e23d454a323bbbe9c77a9704488b1d6a (diff) | |
Merge "Prevent PrintRegistry callbacks when finishing" into nyc-mr1-dev
| -rw-r--r-- | packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java | 1 | ||||
| -rw-r--r-- | packages/PrintSpooler/src/com/android/printspooler/ui/PrinterRegistry.java | 44 |
2 files changed, 21 insertions, 24 deletions
diff --git a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java index c318275aafd0..2c4025d25380 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java +++ b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java @@ -2060,6 +2060,7 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat if (mPrinterRegistry != null) { mPrinterRegistry.setTrackedPrinter(null); + mPrinterRegistry.setOnPrintersChangeListener(null); } if (mPrintersObserver != null) { diff --git a/packages/PrintSpooler/src/com/android/printspooler/ui/PrinterRegistry.java b/packages/PrintSpooler/src/com/android/printspooler/ui/PrinterRegistry.java index 86366dd21ead..9fca9593162c 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/ui/PrinterRegistry.java +++ b/packages/PrintSpooler/src/com/android/printspooler/ui/PrinterRegistry.java @@ -120,13 +120,11 @@ public class PrinterRegistry { @Override public void onLoaderReset(Loader<List<PrinterInfo>> loader) { mPrinters.clear(); - if (mOnPrintersChangeListener != null) { - // Post a message as we are in onLoadFinished and certain operations - // are not allowed in this callback, such as fragment transactions. - // Clients should not handle this explicitly. - mHandler.obtainMessage(MyHandler.MSG_PRINTERS_INVALID, - mOnPrintersChangeListener).sendToTarget(); - } + + // Post a message as we are in onLoadFinished and certain operations + // are not allowed in this callback, such as fragment transactions. + // Clients should not handle this explicitly. + mHandler.obtainMessage(MyHandler.MSG_PRINTERS_INVALID).sendToTarget(); } // LoaderCallbacks#onLoadFinished @@ -134,15 +132,12 @@ public class PrinterRegistry { public void onLoadFinished(Loader<List<PrinterInfo>> loader, List<PrinterInfo> printers) { mPrinters.clear(); mPrinters.addAll(printers); - if (mOnPrintersChangeListener != null) { - // Post a message as we are in onLoadFinished and certain operations - // are not allowed in this callback, such as fragment transactions. - // Clients should not handle this explicitly. - SomeArgs args = SomeArgs.obtain(); - args.arg1 = mOnPrintersChangeListener; - args.arg2 = printers; - mHandler.obtainMessage(MyHandler.MSG_PRINTERS_CHANGED, args).sendToTarget(); - } + + // Post a message as we are in onLoadFinished and certain operations + // are not allowed in this callback, such as fragment transactions. + // Clients should not handle this explicitly. + mHandler.obtainMessage(MyHandler.MSG_PRINTERS_CHANGED, printers).sendToTarget(); + if (!mReady) { mReady = true; if (mReadyCallback != null) { @@ -158,7 +153,7 @@ public class PrinterRegistry { } }; - private static final class MyHandler extends Handler { + private final class MyHandler extends Handler { public static final int MSG_PRINTERS_CHANGED = 0; public static final int MSG_PRINTERS_INVALID = 1; @@ -171,16 +166,17 @@ public class PrinterRegistry { public void handleMessage(Message message) { switch (message.what) { case MSG_PRINTERS_CHANGED: { - SomeArgs args = (SomeArgs) message.obj; - OnPrintersChangeListener callback = (OnPrintersChangeListener) args.arg1; - List<PrinterInfo> printers = (List<PrinterInfo>) args.arg2; - args.recycle(); - callback.onPrintersChanged(printers); + List<PrinterInfo> printers = (List<PrinterInfo>) message.obj; + + if (mOnPrintersChangeListener != null) { + mOnPrintersChangeListener.onPrintersChanged(printers); + } } break; case MSG_PRINTERS_INVALID: { - OnPrintersChangeListener callback = (OnPrintersChangeListener) message.obj; - callback.onPrintersInvalid(); + if (mOnPrintersChangeListener != null) { + mOnPrintersChangeListener.onPrintersInvalid(); + } } break; } } |