Index: platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/ViewerApplication.java |
diff --git a/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/ViewerApplication.java b/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/ViewerApplication.java |
index 4b890bd5e1279cb2437a205d581b54aa04dffabc..0dee3e041d88b904c9623954fb794fc56e13b1c8 100644 |
--- a/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/ViewerApplication.java |
+++ b/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/ViewerApplication.java |
@@ -12,6 +12,7 @@ import android.app.Application; |
public class ViewerApplication extends Application { |
private long mNativeHandle = 0; |
private ViewerActivity mViewerActivity; |
+ private String mStateJsonStr; |
static { |
System.loadLibrary("skia_android"); |
@@ -41,7 +42,12 @@ public class ViewerApplication extends Application { |
} |
public void setViewerActivity(ViewerActivity viewerActivity) { |
- this.mViewerActivity = viewerActivity; |
+ mViewerActivity = viewerActivity; |
+ // Note that viewerActivity might be null (called by onDestroy) |
+ if (mStateJsonStr != null && mViewerActivity != null) { |
+ // A new ViewerActivity is created, initialize its state |
+ mViewerActivity.updateState(mStateJsonStr); |
+ } |
} |
public void setTitle(String title) { |
@@ -55,4 +61,18 @@ public class ViewerApplication extends Application { |
}); |
} |
} |
+ |
+ public void updateState(String stateJsonStr) { |
+ // We have to store this state because ViewerActivity may be destroyed while the native app |
+ // is still running. When a new ViewerActivity is created, we'll pass the state to it. |
+ mStateJsonStr = stateJsonStr; |
+ if (mViewerActivity != null) { |
+ mViewerActivity.runOnUiThread(new Runnable() { |
+ @Override |
+ public void run() { |
+ mViewerActivity.updateState(mStateJsonStr); |
+ } |
+ }); |
+ } |
+ } |
} |