| 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);
|
| + }
|
| + });
|
| + }
|
| + }
|
| }
|
|
|