android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java | 21 ++++++---- 1 file changed, 14 insertions(+), 7 deletions(-)
New commits: commit 11d699c9f3646c496ae5e6fbe54fb4de4d4a126b Author: Tomaž Vajngerl <[email protected]> AuthorDate: Wed Mar 4 11:33:17 2020 +0100 Commit: Jan Holesovsky <[email protected]> CommitDate: Tue Mar 10 14:52:25 2020 +0100 android: create mainHandler on demand to prevent NPE A crash happens when "back" is hit with a NPE exception because mainHandler is null (not yet initilized). This changes the code so mainHandler is initialized on demand and if not before, then at least when initUI is called. Change-Id: Id20b2093315ba41dac205fc4e94f31d00a4fe1f1 Reviewed-on: https://gerrit.libreoffice.org/c/online/+/89953 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Michael Meeks <[email protected]> (cherry picked from commit 0897397834608ff8f87382cac896f8912260616c) Reviewed-on: https://gerrit.libreoffice.org/c/online/+/90212 Reviewed-by: Jan Holesovsky <[email protected]> diff --git a/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java b/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java index e1fbc6717..73689b3f0 100644 --- a/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java +++ b/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java @@ -101,7 +101,7 @@ public class LOActivity extends AppCompatActivity { private String urlToLoad; private WebView mWebView; private SharedPreferences sPrefs; - private Handler mainHandler; + private Handler mMainHandler = null; private boolean isDocEditable = false; private boolean isDocDebuggable = BuildConfig.DEBUG; @@ -245,6 +245,13 @@ public class LOActivity extends AppCompatActivity { return true; } + private Handler getMainHandler() { + if (mMainHandler == null) { + mMainHandler = new Handler(getMainLooper()); + } + return mMainHandler; + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -348,7 +355,7 @@ public class LOActivity extends AppCompatActivity { } } - mainHandler = new Handler(getMainLooper()); + getMainHandler(); clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); nativeMsgThread = new Thread(new Runnable() { @@ -406,7 +413,7 @@ public class LOActivity extends AppCompatActivity { final Intent finalIntent = intent; mProgressDialog.indeterminate(R.string.saving); - mainHandler.post(new Runnable() { + getMainHandler().post(new Runnable() { @Override public void run() { documentLoaded = false; @@ -652,7 +659,7 @@ public class LOActivity extends AppCompatActivity { // The 'BYE' takes a considerable amount of time, we need to post it // so that it starts after the saving progress is actually shown - mainHandler.post(new Runnable() { + getMainHandler().post(new Runnable() { @Override public void run() { documentLoaded = false; @@ -793,7 +800,7 @@ public class LOActivity extends AppCompatActivity { finishWithProgress(); return false; case "PRINT": - mainHandler.post(new Runnable() { + getMainHandler().post(new Runnable() { @Override public void run() { LOActivity.this.initiatePrint(); @@ -819,7 +826,7 @@ public class LOActivity extends AppCompatActivity { } break; case "DIM_SCREEN": { - mainHandler.post(new Runnable() { + getMainHandler().post(new Runnable() { @Override public void run() { getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); @@ -828,7 +835,7 @@ public class LOActivity extends AppCompatActivity { return false; } case "LIGHT_SCREEN": { - mainHandler.post(new Runnable() { + getMainHandler().post(new Runnable() { @Override public void run() { getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
