@Override public int restoreSome( long token, IRestoreObserver observer, IBackupManagerMonitor monitor, String[] packages) throws RemoteException { List<String> restorePackages = new ArrayList<>(serviceState.restoreData.get(token)); if (packages != null) { restorePackages.retainAll(Arrays.asList(packages)); } post(() -> observer.restoreStarting(restorePackages.size())); for (int i = 0; i < restorePackages.size(); i++) { final int index = i; // final copy of i post(() -> observer.onUpdate(index, restorePackages.get(index))); serviceState.restoredPackages.put(restorePackages.get(index), token); } post(() -> observer.restoreFinished(BackupManager.SUCCESS)); serviceState.lastRestoreToken = token; return BackupManager.SUCCESS; }
@Override public int restorePackage( String packageName, IRestoreObserver observer, IBackupManagerMonitor monitor) throws RemoteException { if (serviceState.lastRestoreToken == 0L) { return -1; } List<String> restorePackages = serviceState.restoreData.get(serviceState.lastRestoreToken); if (!restorePackages.contains(packageName)) { return BackupManager.ERROR_PACKAGE_NOT_FOUND; } post(() -> observer.restoreStarting(1)); post(() -> observer.onUpdate(0, packageName)); serviceState.restoredPackages.put(packageName, serviceState.lastRestoreToken); post(() -> observer.restoreFinished(BackupManager.SUCCESS)); return BackupManager.SUCCESS; }
@Override public int restoreSome( long token, IRestoreObserver observer, IBackupManagerMonitor monitor, String[] packages) throws RemoteException { List<String> restorePackages = new ArrayList<>(serviceState.restoreData.get(token)); if (packages != null) { restorePackages.retainAll(Arrays.asList(packages)); } post(() -> observer.restoreStarting(restorePackages.size())); for (int i = 0; i < restorePackages.size(); i++) { final int index = i; // final copy of i post(() -> observer.onUpdate(index, restorePackages.get(index))); serviceState.restoredPackages.put(restorePackages.get(index), token); } post(() -> observer.restoreFinished(BackupManager.SUCCESS)); serviceState.lastRestoreToken = token; return BackupManager.SUCCESS; }
@Override public int restorePackage( String packageName, IRestoreObserver observer, IBackupManagerMonitor monitor) throws RemoteException { if (serviceState.lastRestoreToken == 0L) { return -1; } List<String> restorePackages = serviceState.restoreData.get(serviceState.lastRestoreToken); if (!restorePackages.contains(packageName)) { return BackupManager.ERROR_PACKAGE_NOT_FOUND; } post(() -> observer.restoreStarting(1)); post(() -> observer.onUpdate(0, packageName)); serviceState.restoredPackages.put(packageName, serviceState.lastRestoreToken); post(() -> observer.restoreFinished(BackupManager.SUCCESS)); return BackupManager.SUCCESS; }