Fix fucking issue #193 by removing recycle in finalize

This commit is contained in:
hyb1996
2017-05-06 15:29:44 +08:00
parent 68845c9a21
commit ed2ebe1599
24 changed files with 373 additions and 65 deletions

View File

@@ -7,7 +7,6 @@ import android.os.Bundle;
import android.support.annotation.Keep;
import android.support.multidex.MultiDexApplication;
import com.flurry.android.FlurryAgent;
import com.squareup.leakcanary.LeakCanary;
import com.stardust.app.SimpleActivityLifecycleCallbacks;
import com.stardust.app.VolumeChangeObserver;

View File

@@ -1,6 +1,5 @@
package com.stardust.scriptdroid.autojs;
import com.flurry.android.FlurryAgent;
import com.stardust.autojs.execution.ScriptExecution;
import com.stardust.autojs.execution.ScriptExecutionListener;
import com.stardust.scriptdroid.App;

View File

@@ -6,7 +6,7 @@ import android.support.annotation.NonNull;
import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
import android.view.accessibility.AccessibilityNodeInfo;
import com.stardust.view.accessibility.AccessibilityNodeInfoAllocator;
import com.stardust.automator.UiObject;
import java.util.ArrayList;
import java.util.List;
@@ -74,19 +74,24 @@ public class NodeInfo {
this(new AccessibilityNodeInfoCompat(node));
}
public static NodeInfo capture(@NonNull AccessibilityNodeInfo root) {
AccessibilityNodeInfoAllocator allocator = new AccessibilityNodeInfoAllocator();
public static NodeInfo capture(@NonNull UiObject root) {
NodeInfo nodeInfo = new NodeInfo(root);
for (int i = 0; i < root.getChildCount(); i++) {
AccessibilityNodeInfo child = allocator.getChild(root, i);
int childCount = root.getChildCount();
for (int i = 0; i < childCount; i++) {
UiObject child = root.child(i);
if (child != null) {
nodeInfo.children.add(capture(child));
}
}
allocator.recycleAll();
return nodeInfo;
}
public static NodeInfo capture(@NonNull AccessibilityNodeInfo root) {
UiObject r = UiObject.createRoot(root);
return capture(r);
}
public List<NodeInfo> getChildren() {
return children;
}

View File

@@ -123,13 +123,11 @@ public class AccessibilityActionConverter {
AccessibilityNodeInfo source = event.getSource();
if (source == null)
return;
AccessibilityNodeInfoAllocator allocator = new AccessibilityNodeInfoAllocator();
UiObject uiObject = new UiObject(service.getRootInActiveWindow(), allocator);
UiObject uiObject = UiObject.createRoot(service.getRootInActiveWindow());
List<UiObject> editableList = FilterAction.EditableFilter.findEditable(uiObject);
int i = findInEditableList(editableList, source);
sb.append("while(!input(").append(i).append(", \"").append(source.getText()).append("\"));");
source.recycle();
allocator.recycleAll();
}
private static int findInEditableList(List<UiObject> editableList, AccessibilityNodeInfo editable) {

View File

@@ -1,26 +1,15 @@
package com.stardust.scriptdroid.ui;
import android.app.Activity;
import android.content.DialogInterface;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.flurry.android.FlurryAgent;
import com.stardust.pio.PFile;
import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.tool.UpdateChecker;
import com.stardust.scriptdroid.tool.VersionInfo;
import com.stardust.scriptdroid.ui.update.UpdateCheckDialog;
import com.stardust.theme.ThemeColorManager;
import com.stardust.util.BackPressedHandler;

View File

@@ -2,11 +2,13 @@ package com.stardust.scriptdroid.ui.console;
import android.content.Context;
import android.content.Intent;
import android.view.WindowManager;
import com.stardust.autojs.runtime.api.AbstractConsole;
import com.stardust.autojs.runtime.api.Console;
import com.stardust.enhancedfloaty.FloatyService;
import com.stardust.enhancedfloaty.ResizableExpandableFloatyWindow;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.autojs.AutoJs;
import com.stardust.util.UiHandler;
@@ -82,7 +84,12 @@ public class StardustConsole extends AbstractConsole {
mUiHandler.post(new Runnable() {
@Override
public void run() {
FloatyService.addWindow(mFloatyWindow);
try {
FloatyService.addWindow(mFloatyWindow);
} catch (WindowManager.BadTokenException e) {
e.printStackTrace();
mUiHandler.toast(R.string.text_no_floating_window_permission);
}
}
});
}