Add new activity dumpsys command to persist all data.

Very useful for testing persisting/restoring, to make sure
that all pending changes have been written.

Change-Id: I0e3b7cd3af8afb0b6e751e086081566ab00b76c9
diff --git a/services/core/java/com/android/server/am/TaskPersister.java b/services/core/java/com/android/server/am/TaskPersister.java
index 1c0564f..afc781f 100644
--- a/services/core/java/com/android/server/am/TaskPersister.java
+++ b/services/core/java/com/android/server/am/TaskPersister.java
@@ -187,6 +187,19 @@
         yieldIfQueueTooDeep();
     }
 
+    void flush() {
+        synchronized (this) {
+            mNextWriteTime = FLUSH_QUEUE;
+            notifyAll();
+            do {
+                try {
+                    wait();
+                } catch (InterruptedException e) {
+                }
+            } while (mNextWriteTime == FLUSH_QUEUE);
+        }
+    }
+
     void saveImage(Bitmap image, String filename) {
         synchronized (this) {
             int queueNdx;
@@ -483,8 +496,12 @@
                                 INTER_WRITE_DELAY_MS + " msec. (" + mNextWriteTime + ")");
                     }
 
+
                     while (mWriteQueue.isEmpty()) {
-                        mNextWriteTime = 0; // idle.
+                        if (mNextWriteTime != 0) {
+                            mNextWriteTime = 0; // idle.
+                            TaskPersister.this.notifyAll(); // wake up flush() if needed.
+                        }
                         try {
                             if (DEBUG) Slog.d(TAG, "LazyTaskWriter: waiting indefinitely.");
                             TaskPersister.this.wait();