diff --git a/inrt/src/main/java/com/stardust/auojs/inrt/LogActivity.java b/inrt/src/main/java/com/stardust/auojs/inrt/LogActivity.java index 421c9ce6..423d03f6 100644 --- a/inrt/src/main/java/com/stardust/auojs/inrt/LogActivity.java +++ b/inrt/src/main/java/com/stardust/auojs/inrt/LogActivity.java @@ -14,6 +14,7 @@ import android.view.View; import com.stardust.auojs.inrt.autojs.AutoJs; import com.stardust.auojs.inrt.launch.AssetsProjectLauncher; +import com.stardust.auojs.inrt.launch.GlobalProjectLauncher; import com.stardust.autojs.core.console.ConsoleView; import com.stardust.autojs.core.console.StardustConsole; @@ -21,16 +22,23 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import javax.microedition.khronos.opengles.GL; + import static android.content.pm.PackageManager.PERMISSION_DENIED; import static android.content.pm.PackageManager.PERMISSION_GRANTED; public class LogActivity extends AppCompatActivity { + public static final String EXTRA_LAUNCH_SCRIPT = "launch_script"; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setupView(); + if (getIntent().getBooleanExtra(EXTRA_LAUNCH_SCRIPT, false)) { + GlobalProjectLauncher.getInstance().launch(this); + } } private void setupView() { diff --git a/inrt/src/main/java/com/stardust/auojs/inrt/SplashActivity.java b/inrt/src/main/java/com/stardust/auojs/inrt/SplashActivity.java index 116743cb..80425eb7 100644 --- a/inrt/src/main/java/com/stardust/auojs/inrt/SplashActivity.java +++ b/inrt/src/main/java/com/stardust/auojs/inrt/SplashActivity.java @@ -13,6 +13,7 @@ import android.support.v7.app.AppCompatActivity; import android.widget.TextView; import com.stardust.auojs.inrt.launch.AssetsProjectLauncher; +import com.stardust.auojs.inrt.launch.GlobalProjectLauncher; import java.util.ArrayList; import java.util.Arrays; @@ -48,7 +49,7 @@ public class SplashActivity extends AppCompatActivity { private void runScript() { - new Thread(() -> new AssetsProjectLauncher("project", this).launch()).start(); + new Thread(() -> GlobalProjectLauncher.getInstance().launch(this)).start(); } @Override diff --git a/inrt/src/main/java/com/stardust/auojs/inrt/launch/AssetsProjectLauncher.java b/inrt/src/main/java/com/stardust/auojs/inrt/launch/AssetsProjectLauncher.java index caf2530a..33d93fe1 100644 --- a/inrt/src/main/java/com/stardust/auojs/inrt/launch/AssetsProjectLauncher.java +++ b/inrt/src/main/java/com/stardust/auojs/inrt/launch/AssetsProjectLauncher.java @@ -1,7 +1,10 @@ package com.stardust.auojs.inrt.launch; import android.app.Activity; +import android.content.Context; import android.content.Intent; +import android.os.Handler; +import android.os.Looper; import com.stardust.auojs.inrt.BuildConfig; import com.stardust.auojs.inrt.LogActivity; @@ -24,29 +27,38 @@ public class AssetsProjectLauncher { private String mProjectDir; private File mMainScriptFile; private ProjectConfig mProjectConfig; - private Activity mActivity; + private Context mActivity; + private Handler mHandler; - public AssetsProjectLauncher(String projectDir, Activity activity) { + public AssetsProjectLauncher(String projectDir, Context context) { mAssetsProjectDir = projectDir; - mActivity = activity; - mProjectDir = new File(activity.getFilesDir(), "project/").getPath(); - mProjectConfig = ProjectConfig.fromAssets(activity, ProjectConfig.configFileOfDir(mAssetsProjectDir)); + mActivity = context; + mProjectDir = new File(context.getFilesDir(), "project/").getPath(); + mProjectConfig = ProjectConfig.fromAssets(context, ProjectConfig.configFileOfDir(mAssetsProjectDir)); mMainScriptFile = new File(mProjectDir, mProjectConfig.getMainScriptFile()); + mHandler = new Handler(Looper.getMainLooper()); + prepare(); } - public void launch() { - prepare(); - if (!(mProjectConfig.getLaunchConfig().shouldHideLogs() || Pref.shouldHideLogs())) { - mActivity.runOnUiThread(() -> { - mActivity.startActivity(new Intent(mActivity, LogActivity.class)); - mActivity.finish(); - mActivity = null; - }); + public void launch(Activity activity) { + //如果需要隐藏日志界面,则直接运行脚本 + if (mProjectConfig.getLaunchConfig().shouldHideLogs() || Pref.shouldHideLogs()) { + activity.finish(); + runScript(); } else { - mActivity.finish(); - mActivity = null; + //如果不隐藏日志界面 + //如果当前已经是日志界面则直接运行脚本 + if (activity instanceof LogActivity) { + runScript(); + } else { + //否则显示日志界面并在日志界面中运行脚本 + mHandler.post(() -> { + activity.startActivity(new Intent(mActivity, LogActivity.class) + .putExtra(LogActivity.EXTRA_LAUNCH_SCRIPT, true)); + activity.finish(); + }); + } } - runScript(); } private void runScript() { diff --git a/inrt/src/main/java/com/stardust/auojs/inrt/launch/GlobalProjectLauncher.java b/inrt/src/main/java/com/stardust/auojs/inrt/launch/GlobalProjectLauncher.java new file mode 100644 index 00000000..adf4bcff --- /dev/null +++ b/inrt/src/main/java/com/stardust/auojs/inrt/launch/GlobalProjectLauncher.java @@ -0,0 +1,25 @@ +package com.stardust.auojs.inrt.launch; + +import android.app.Activity; +import android.content.Context; + +import com.stardust.auojs.inrt.App; + +/** + * Created by Stardust on 2018/3/21. + */ + +public class GlobalProjectLauncher extends AssetsProjectLauncher { + + private static GlobalProjectLauncher sInstance; + + public static GlobalProjectLauncher getInstance() { + if (sInstance == null) + sInstance = new GlobalProjectLauncher(App.getApp()); + return sInstance; + } + + GlobalProjectLauncher(Context context) { + super("project", context); + } +}