android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java | 21 ++++++---- 1 file changed, 14 insertions(+), 7 deletions(-)
New commits: commit 0897397834608ff8f87382cac896f8912260616c Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Wed Mar 4 11:33:17 2020 +0100 Commit: Michael Meeks <michael.me...@collabora.com> CommitDate: Wed Mar 4 13:28:07 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 <jenkinscollaboraoff...@gmail.com> Reviewed-by: Michael Meeks <michael.me...@collabora.com> 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 c7796d05c..d54ab18ce 100644 --- a/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java +++ b/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java @@ -100,7 +100,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; @@ -246,6 +246,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); @@ -350,7 +357,7 @@ public class LOActivity extends AppCompatActivity { } } - mainHandler = new Handler(getMainLooper()); + getMainHandler(); clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); nativeMsgThread = new Thread(new Runnable() { @@ -408,7 +415,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; @@ -642,7 +649,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; @@ -810,7 +817,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(); @@ -836,7 +843,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); @@ -845,7 +852,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 libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits