opt(autojs): optimize TimedTaskScheduler to schedule task

This commit is contained in:
hyb1996
2018-09-09 13:47:23 +08:00
parent 32548ff9f4
commit f62958655a
6 changed files with 16 additions and 11 deletions

Binary file not shown.

View File

@@ -8,8 +8,8 @@ android {
applicationId "org.autojs.autojs" applicationId "org.autojs.autojs"
minSdkVersion 17 minSdkVersion 17
targetSdkVersion 23 targetSdkVersion 23
versionCode 409 versionCode 410
versionName "4.0.2 Alpha4" versionName "4.0.2 Alpha5"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true multiDexEnabled true
ndk { ndk {

View File

@@ -6,8 +6,11 @@ import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Build; import android.os.Build;
import android.os.Parcelable;
import android.util.Log; import android.util.Log;
import com.twofortyfouram.spackle.AlarmManagerCompat;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
@@ -57,9 +60,12 @@ public class TimedTaskScheduler extends BroadcastReceiver {
context.sendBroadcast(timedTask.createIntent()); context.sendBroadcast(timedTask.createIntent());
return; return;
} }
assert alarmManager != null;
// FIXME: 2017/11/28 requestCode may > 65535 // FIXME: 2017/11/28 requestCode may > 65535
PendingIntent op = timedTask.createPendingIntent(context); PendingIntent op = timedTask.createPendingIntent(context);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
alarmManager.setAlarmClock(new AlarmManager.AlarmClockInfo(millis, null), op);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, millis, op); alarmManager.setExact(AlarmManager.RTC_WAKEUP, millis, op);
} else { } else {
alarmManager.set(AlarmManager.RTC_WAKEUP, millis, op); alarmManager.set(AlarmManager.RTC_WAKEUP, millis, op);

View File

@@ -16,7 +16,6 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import dalvik.system.DexClassLoader; import dalvik.system.DexClassLoader;
import dalvik.system.DexFile;
/** /**
* Created by Stardust on 2017/4/5. * Created by Stardust on 2017/4/5.
@@ -26,7 +25,7 @@ public class AndroidClassLoader extends ClassLoader implements GeneratedClassLoa
private final ClassLoader parent; private final ClassLoader parent;
private List<DexClassLoader> dx; private List<DexClassLoader> mDexClassLoaders;
private final File dexFile; private final File dexFile;
private final File odexOatFile; private final File odexOatFile;
private final File classFile; private final File classFile;
@@ -41,7 +40,7 @@ public class AndroidClassLoader extends ClassLoader implements GeneratedClassLoa
public AndroidClassLoader(ClassLoader parent, File dir) { public AndroidClassLoader(ClassLoader parent, File dir) {
this.parent = parent; this.parent = parent;
mCacheDir = dir; mCacheDir = dir;
dx = new ArrayList<>(); mDexClassLoaders = new ArrayList<>();
dexFile = new File(dir, "dex-" + hashCode() + ".jar"); dexFile = new File(dir, "dex-" + hashCode() + ".jar");
odexOatFile = new File(dir, "odex_oat-" + hashCode() + ".tmp"); odexOatFile = new File(dir, "odex_oat-" + hashCode() + ".tmp");
classFile = new File(dir, "class-" + hashCode() + ".jar"); classFile = new File(dir, "class-" + hashCode() + ".jar");
@@ -92,7 +91,7 @@ public class AndroidClassLoader extends ClassLoader implements GeneratedClassLoa
public DexClassLoader loadDex(File file) throws IOException { public DexClassLoader loadDex(File file) throws IOException {
DexClassLoader loader = new DexClassLoader(file.getPath(), mCacheDir.getPath(), null, parent); DexClassLoader loader = new DexClassLoader(file.getPath(), mCacheDir.getPath(), null, parent);
dx.add(loader); mDexClassLoaders.add(loader);
return loader; return loader;
} }
@@ -131,7 +130,7 @@ public class AndroidClassLoader extends ClassLoader implements GeneratedClassLoa
throws ClassNotFoundException { throws ClassNotFoundException {
Class<?> loadedClass = findLoadedClass(name); Class<?> loadedClass = findLoadedClass(name);
if (loadedClass == null) { if (loadedClass == null) {
for (DexClassLoader dex : dx) { for (DexClassLoader dex : mDexClassLoaders) {
loadedClass = dex.loadClass(name); loadedClass = dex.loadClass(name);
if (loadedClass != null) { if (loadedClass != null) {
break; break;

View File

@@ -1 +1 @@
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":409},"path":"commonRelease-4.0.2 Alpha4.apk","properties":{"packageId":"org.autojs.autojs","split":"","minSdkVersion":"17"}}] [{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":410},"path":"commonRelease-4.0.2 Alpha5.apk","properties":{"packageId":"org.autojs.autojs","split":"","minSdkVersion":"17"}}]

View File

@@ -8,8 +8,8 @@ android {
applicationId "com.stardust.auojs.inrt" applicationId "com.stardust.auojs.inrt"
minSdkVersion 17 minSdkVersion 17
targetSdkVersion 23 targetSdkVersion 23
versionCode 203 versionCode 210
versionName "4.0.0 Beta" versionName "4.0.2 Alpha5"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
ndk { ndk {
abiFilters 'armeabi-v7a' abiFilters 'armeabi-v7a'