Optimization
all hooks : Reload pref instead of creating new instance
movable : remove useless casting
resizable : remove commented code
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 65cb202..ffc6e69 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -2,7 +2,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.zst.xposed.halo.floatingwindow"
android:versionCode="124"
- android:versionName="1.24 Beta" >
+ android:versionName="1.25 Beta 1" >
<uses-sdk
android:minSdkVersion="14"
diff --git a/src/com/zst/xposed/halo/floatingwindow/HaloFlagInject.java b/src/com/zst/xposed/halo/floatingwindow/HaloFlagInject.java
index 819fa7e..7c857a5 100644
--- a/src/com/zst/xposed/halo/floatingwindow/HaloFlagInject.java
+++ b/src/com/zst/xposed/halo/floatingwindow/HaloFlagInject.java
@@ -13,25 +13,33 @@
import android.content.pm.ActivityInfo;
import android.view.Window;
import de.robv.android.xposed.IXposedHookLoadPackage;
+import de.robv.android.xposed.IXposedHookZygoteInit;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XC_MethodReplacement;
import de.robv.android.xposed.XSharedPreferences;
import de.robv.android.xposed.XposedBridge;
+import de.robv.android.xposed.IXposedHookZygoteInit.StartupParam;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;
import de.robv.android.xposed.callbacks.XCallback;
-public class HaloFlagInject implements IXposedHookLoadPackage{
+public class HaloFlagInject implements IXposedHookLoadPackage, IXposedHookZygoteInit{
public static final int FLAG_FLOATING_WINDOW = 0x00002000;
public static XSharedPreferences pref;
static boolean newTask;
static boolean floatingWindow;
static String previousPkg = Res.NULL;
+
+ @Override
+ public void initZygote(StartupParam startupParam) throws Throwable {
+ pref = new XSharedPreferences(Res.MY_PACKAGE_NAME,Res.MY_PACKAGE_NAME);
+ }
+
@Override
public void handleLoadPackage(LoadPackageParam l) throws Throwable {
- pref = new XSharedPreferences(Res.MY_PACKAGE_NAME,Res.MY_PACKAGE_NAME);
+ pref.reload();
inject_ActivityRecord_ActivityRecord(l);
- inject_ActivityStack(l);
+ inject_ActivityStack(l,pref);
inject_WindowManagerService_setAppStartingWindow(l);
inject_Activity(pref);
inject_DecorView_generateLayout(l);
@@ -122,12 +130,11 @@
}
}
static Object previous = null;
- public static void inject_ActivityStack(final LoadPackageParam lpparam) {
+ public static void inject_ActivityStack(final LoadPackageParam lpparam, final XSharedPreferences pref) {
Class<?> hookClass = findClass("com.android.server.am.ActivityStack", lpparam.classLoader);
XposedBridge.hookAllMethods(hookClass, "resumeTopActivityLocked", new XC_MethodHook() {
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
- pref = new XSharedPreferences(Res.MY_PACKAGE_NAME,Res.MY_PACKAGE_NAME);
boolean b = pref.getBoolean(Res.KEY_APP_PAUSE, Res.DEFAULT_APP_PAUSE);
if (!b) return;
if (!floatingWindow) return;
@@ -142,7 +149,6 @@
}
}
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
- pref = new XSharedPreferences(Res.MY_PACKAGE_NAME,Res.MY_PACKAGE_NAME);
boolean b = pref.getBoolean(Res.KEY_APP_PAUSE, Res.DEFAULT_APP_PAUSE);
if (!b) return;
if (!floatingWindow) return;
diff --git a/src/com/zst/xposed/halo/floatingwindow/LayoutScaling.java b/src/com/zst/xposed/halo/floatingwindow/LayoutScaling.java
index f8d8183..6bdcedc 100644
--- a/src/com/zst/xposed/halo/floatingwindow/LayoutScaling.java
+++ b/src/com/zst/xposed/halo/floatingwindow/LayoutScaling.java
@@ -42,7 +42,8 @@
appleFloating( context , mWindow);
}
public static void appleFloating(Context context , Window mWindow){
- pref = new XSharedPreferences(Res.MY_PACKAGE_NAME,Res.MY_PACKAGE_NAME);
+ pref = HaloFlagInject.pref;
+ pref.reload();
boolean isMovable = pref.getBoolean(Res.KEY_MOVABLE_WINDOW, Res.DEFAULT_MOVABLE_WINDOW);
if(!isMovable){
mWindow.setCloseOnTouchOutsideIfNotSet(true);
@@ -71,7 +72,8 @@
metrics = new DisplayMetrics();
metrics = dm;
}
- pref = new XSharedPreferences(Res.MY_PACKAGE_NAME,Res.MY_PACKAGE_NAME);
+ pref = HaloFlagInject.pref;
+ pref.reload();
if (metrics.heightPixels > metrics.widthPixels) { // portrait
Float width_portrait = pref.getFloat(Res.KEY_PORTRAIT_WIDTH, Res.DEFAULT_PORTRAIT_WIDTH);
Float height__portrait = pref.getFloat(Res.KEY_PORTRAIT_HEIGHT, Res.DEFAULT_PORTRAIT_HEIGHT);
diff --git a/src/com/zst/xposed/halo/floatingwindow/MovableWindow.java b/src/com/zst/xposed/halo/floatingwindow/MovableWindow.java
index 06f9cc6..2e47f46 100644
--- a/src/com/zst/xposed/halo/floatingwindow/MovableWindow.java
+++ b/src/com/zst/xposed/halo/floatingwindow/MovableWindow.java
@@ -62,6 +62,7 @@
static ImageView triangle;
static View overlayView;
private static String MODULE_PATH = null;
+ private static XSharedPreferences pref;
@Override
public void handleInitPackageResources(InitPackageResourcesParam resparam) throws Throwable {
@@ -71,11 +72,12 @@
@Override
public void initZygote(StartupParam startupParam) throws Throwable {
MODULE_PATH = startupParam.modulePath;
+ pref = new XSharedPreferences(Res.MY_PACKAGE_NAME,Res.MY_PACKAGE_NAME);
}
@Override
public void handleLoadPackage(LoadPackageParam l) throws Throwable {
- XSharedPreferences pref = new XSharedPreferences(Res.MY_PACKAGE_NAME,Res.MY_PACKAGE_NAME);
+ pref.reload();
if (!pref.getBoolean(Res.KEY_MOVABLE_WINDOW, Res.DEFAULT_MOVABLE_WINDOW)) return;
focusChangeContextFinder(l);
onCreateHook();
diff --git a/src/com/zst/xposed/halo/floatingwindow/movable/Movable.java b/src/com/zst/xposed/halo/floatingwindow/movable/Movable.java
index 6d1cc95..8cf8734 100644
--- a/src/com/zst/xposed/halo/floatingwindow/movable/Movable.java
+++ b/src/com/zst/xposed/halo/floatingwindow/movable/Movable.java
@@ -47,6 +47,6 @@
private void updateView(Window mWindow, float x , float y){
param.x = (int)x;
param.y = (int)y;
- mWindow.setAttributes((android.view.WindowManager.LayoutParams) param);
+ mWindow.setAttributes(param);
}
}
diff --git a/src/com/zst/xposed/halo/floatingwindow/movable/Resizable.java b/src/com/zst/xposed/halo/floatingwindow/movable/Resizable.java
index 9adad18..c4b5855 100644
--- a/src/com/zst/xposed/halo/floatingwindow/movable/Resizable.java
+++ b/src/com/zst/xposed/halo/floatingwindow/movable/Resizable.java
@@ -73,42 +73,3 @@
}
}
}
- /*
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- switch (event.getAction()){
- case MotionEvent.ACTION_DOWN:
- window.setGravity(Gravity.LEFT | Gravity.TOP);
- param = window.getAttributes();
- oldX = (int)event.getRawX();
- oldY = (int)event.getRawY();
- oldW = param.width;
- oldH = param.height;
- distance_from_top = param.y;
- return false;
-
- case MotionEvent.ACTION_MOVE:
- int newX = (int)event.getRawX();
- int newY = (int)event.getRawY();
-
- int calculatedW = oldW + (oldX - newX);
- int calculatedH = newY - distance_from_top;
-
- if (calculatedW > minSize && calculatedH > minSize){
- param.x = newX;
- param.y = distance_from_top;
- param.width = calculatedW;
- param.height = calculatedH;
- window.setAttributes(param);
- }
- return false;
- case MotionEvent.ACTION_UP:
- break;
- }
- return false;
- }
-
- private int dp(int dp){ //Convert dp to px
- return MovableWindow.dp(dp, context);
- }
-}*/