OSDN Git Service

Fix ANR on HomeActivity
authorBraden Farmer <farmerbb@gmail.com>
Sat, 3 Nov 2018 02:47:33 +0000 (20:47 -0600)
committerBraden Farmer <farmerbb@gmail.com>
Sat, 3 Nov 2018 02:47:33 +0000 (20:47 -0600)
app/src/main/java/com/farmerbb/taskbar/activity/HomeActivityDelegate.java
app/src/main/java/com/farmerbb/taskbar/activity/TouchAbsorberActivity.java

index 7af4493..c2cbfa1 100644 (file)
@@ -42,6 +42,7 @@ import com.farmerbb.taskbar.service.StartMenuService;
 import com.farmerbb.taskbar.service.TaskbarService;
 import com.farmerbb.taskbar.util.CompatUtils;
 import com.farmerbb.taskbar.util.DisplayInfo;
+import com.farmerbb.taskbar.util.FreeformHackHelper;
 import com.farmerbb.taskbar.util.IconCache;
 import com.farmerbb.taskbar.util.LauncherHelper;
 import com.farmerbb.taskbar.util.U;
@@ -218,7 +219,12 @@ public class HomeActivityDelegate extends Activity {
         LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this);
         lbm.registerReceiver(killReceiver, new IntentFilter("com.farmerbb.taskbar.KILL_HOME_ACTIVITY"));
         lbm.registerReceiver(forceTaskbarStartReceiver, new IntentFilter("com.farmerbb.taskbar.FORCE_TASKBAR_RESTART"));
-        lbm.registerReceiver(freeformToggleReceiver, new IntentFilter("com.farmerbb.taskbar.UPDATE_FREEFORM_CHECKBOX"));
+
+        IntentFilter intentFilter = new IntentFilter();
+        intentFilter.addAction("com.farmerbb.taskbar.UPDATE_FREEFORM_CHECKBOX");
+        intentFilter.addAction("com.farmerbb.taskbar.TOUCH_ABSORBER_STATE_CHANGED");
+
+        lbm.registerReceiver(freeformToggleReceiver, intentFilter);
 
         U.initPrefs(this);
     }
@@ -389,12 +395,10 @@ public class HomeActivityDelegate extends Activity {
     }
 
     private void updateWindowFlags() {
-        if(U.isOverridingFreeformHack(this)) {
-            getWindow().setFlags(
-                    WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
-                    WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
-            );
-        } else
-            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
+        int flags = WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
+        if(FreeformHackHelper.getInstance().isTouchAbsorberActive() && U.isOverridingFreeformHack(this))
+            getWindow().setFlags(flags, flags);
+        else
+            getWindow().clearFlags(flags);
     }
 }
index 3215652..ff494b7 100644 (file)
@@ -55,8 +55,11 @@ public class TouchAbsorberActivity extends Activity {
         LinearLayout layout = U.findViewById(this, R.id.incognitoLayout);
         layout.setLayoutParams(new FrameLayout.LayoutParams(display.width, display.height));
 
-        LocalBroadcastManager.getInstance(this).registerReceiver(finishReceiver, new IntentFilter("com.farmerbb.taskbar.FINISH_FREEFORM_ACTIVITY"));
+        LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this);
+        lbm.registerReceiver(finishReceiver, new IntentFilter("com.farmerbb.taskbar.FINISH_FREEFORM_ACTIVITY"));
+
         FreeformHackHelper.getInstance().setTouchAbsorberActive(true);
+        lbm.sendBroadcast(new Intent("com.farmerbb.taskbar.TOUCH_ABSORBER_STATE_CHANGED"));
 
         lastStartTime = System.currentTimeMillis();
     }
@@ -69,8 +72,11 @@ public class TouchAbsorberActivity extends Activity {
 
     @Override
     protected void onDestroy() {
-        LocalBroadcastManager.getInstance(this).unregisterReceiver(finishReceiver);
+        LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this);
+        lbm.unregisterReceiver(finishReceiver);
+
         FreeformHackHelper.getInstance().setTouchAbsorberActive(false);
+        lbm.sendBroadcast(new Intent("com.farmerbb.taskbar.TOUCH_ABSORBER_STATE_CHANGED"));
 
         super.onDestroy();
     }