Loading packages/PrintSpooler/src/com/android/printspooler/FusedPrintersProvider.java +40 −21 Original line number Diff line number Diff line Loading @@ -161,33 +161,48 @@ public class FusedPrintersProvider extends Loader<List<PrinterInfo>> { PrintManager printManager = (PrintManager) getContext() .getSystemService(Context.PRINT_SERVICE); mDiscoverySession = printManager.createPrinterDiscoverySession(); mPersistenceManager.readPrinterHistory(); } if (mPersistenceManager.isReadHistoryCompleted() && !mDiscoverySession.isPrinterDiscoveryStarted()) { mDiscoverySession.setOnPrintersChangeListener(new OnPrintersChangeListener() { @Override public void onPrintersChanged() { ArrayMap<PrinterId, PrinterInfo> printersMap = new ArrayMap<PrinterId, PrinterInfo>(); List<PrinterInfo> printers = mDiscoverySession.getPrinters(); final int printerCount = printers.size(); for (int i = 0; i < printerCount; i++) { PrinterInfo printer = printers.get(i); printersMap.put(printer.getId(), printer); if (DEBUG) { Log.i(LOG_TAG, "onPrintersChanged() count:" + mDiscoverySession.getPrinters().size() + " " + FusedPrintersProvider.this.hashCode()); } computeAndDeliverResult(printersMap); updatePrinters(mDiscoverySession.getPrinters()); } }); mPersistenceManager.readPrinterHistory(); } if (mPersistenceManager.isReadHistoryCompleted() && !mDiscoverySession.isPrinterDiscoveryStarted()) { final int favoriteCount = mFavoritePrinters.size(); List<PrinterId> printerIds = new ArrayList<PrinterId>(favoriteCount); for (int i = 0; i < favoriteCount; i++) { printerIds.add(mFavoritePrinters.get(i).getId()); } mDiscoverySession.startPrinterDisovery(printerIds); List<PrinterInfo> printers = mDiscoverySession.getPrinters(); if (!printers.isEmpty()) { updatePrinters(printers); } } } private void updatePrinters(List<PrinterInfo> printers) { if (mPrinters.equals(printers)) { return; } ArrayMap<PrinterId, PrinterInfo> printersMap = new ArrayMap<PrinterId, PrinterInfo>(); final int printerCount = printers.size(); for (int i = 0; i < printerCount; i++) { PrinterInfo printer = printers.get(i); printersMap.put(printer.getId(), printer); } computeAndDeliverResult(printersMap); } @Override protected boolean onCancelLoad() { if (DEBUG) { Loading Loading @@ -288,7 +303,8 @@ public class FusedPrintersProvider extends Loader<List<PrinterInfo>> { public void readPrinterHistory() { if (DEBUG) { Log.i(LOG_TAG, "read history started"); Log.i(LOG_TAG, "read history started " + FusedPrintersProvider.this.hashCode()); } mReadHistoryInProgress = true; mReadTask = new ReadTask(); Loading Loading @@ -393,7 +409,10 @@ public class FusedPrintersProvider extends Loader<List<PrinterInfo>> { try { in = mStatePersistFile.openRead(); } catch (FileNotFoundException fnfe) { Log.i(LOG_TAG, "No existing printer history."); if (DEBUG) { Log.i(LOG_TAG, "No existing printer history " + FusedPrintersProvider.this.hashCode()); } return new ArrayList<PrinterInfo>(); } try { Loading Loading
packages/PrintSpooler/src/com/android/printspooler/FusedPrintersProvider.java +40 −21 Original line number Diff line number Diff line Loading @@ -161,33 +161,48 @@ public class FusedPrintersProvider extends Loader<List<PrinterInfo>> { PrintManager printManager = (PrintManager) getContext() .getSystemService(Context.PRINT_SERVICE); mDiscoverySession = printManager.createPrinterDiscoverySession(); mPersistenceManager.readPrinterHistory(); } if (mPersistenceManager.isReadHistoryCompleted() && !mDiscoverySession.isPrinterDiscoveryStarted()) { mDiscoverySession.setOnPrintersChangeListener(new OnPrintersChangeListener() { @Override public void onPrintersChanged() { ArrayMap<PrinterId, PrinterInfo> printersMap = new ArrayMap<PrinterId, PrinterInfo>(); List<PrinterInfo> printers = mDiscoverySession.getPrinters(); final int printerCount = printers.size(); for (int i = 0; i < printerCount; i++) { PrinterInfo printer = printers.get(i); printersMap.put(printer.getId(), printer); if (DEBUG) { Log.i(LOG_TAG, "onPrintersChanged() count:" + mDiscoverySession.getPrinters().size() + " " + FusedPrintersProvider.this.hashCode()); } computeAndDeliverResult(printersMap); updatePrinters(mDiscoverySession.getPrinters()); } }); mPersistenceManager.readPrinterHistory(); } if (mPersistenceManager.isReadHistoryCompleted() && !mDiscoverySession.isPrinterDiscoveryStarted()) { final int favoriteCount = mFavoritePrinters.size(); List<PrinterId> printerIds = new ArrayList<PrinterId>(favoriteCount); for (int i = 0; i < favoriteCount; i++) { printerIds.add(mFavoritePrinters.get(i).getId()); } mDiscoverySession.startPrinterDisovery(printerIds); List<PrinterInfo> printers = mDiscoverySession.getPrinters(); if (!printers.isEmpty()) { updatePrinters(printers); } } } private void updatePrinters(List<PrinterInfo> printers) { if (mPrinters.equals(printers)) { return; } ArrayMap<PrinterId, PrinterInfo> printersMap = new ArrayMap<PrinterId, PrinterInfo>(); final int printerCount = printers.size(); for (int i = 0; i < printerCount; i++) { PrinterInfo printer = printers.get(i); printersMap.put(printer.getId(), printer); } computeAndDeliverResult(printersMap); } @Override protected boolean onCancelLoad() { if (DEBUG) { Loading Loading @@ -288,7 +303,8 @@ public class FusedPrintersProvider extends Loader<List<PrinterInfo>> { public void readPrinterHistory() { if (DEBUG) { Log.i(LOG_TAG, "read history started"); Log.i(LOG_TAG, "read history started " + FusedPrintersProvider.this.hashCode()); } mReadHistoryInProgress = true; mReadTask = new ReadTask(); Loading Loading @@ -393,7 +409,10 @@ public class FusedPrintersProvider extends Loader<List<PrinterInfo>> { try { in = mStatePersistFile.openRead(); } catch (FileNotFoundException fnfe) { Log.i(LOG_TAG, "No existing printer history."); if (DEBUG) { Log.i(LOG_TAG, "No existing printer history " + FusedPrintersProvider.this.hashCode()); } return new ArrayList<PrinterInfo>(); } try { Loading