[Libreoffice-commits] online.git: android/lib

Tomaž Vajngerl (via logerrit) logerrit at kemper.freedesktop.org
Wed Mar 4 12:28:25 UTC 2020


 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.vajngerl at collabora.co.uk>
AuthorDate: Wed Mar 4 11:33:17 2020 +0100
Commit:     Michael Meeks <michael.meeks at 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 <jenkinscollaboraoffice at gmail.com>
    Reviewed-by: Michael Meeks <michael.meeks at 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);


More information about the Libreoffice-commits mailing list