cc.game.restart() 为什么不好用,因为 内存初始的js对象都还在,没有释放。
是否有其它重启游戏的方法? 类似 location.reload() 这种初始的js对象都会释放的,干干净净的重启游戏
cc.game.restart() 为什么不好用,因为 内存初始的js对象都还在,没有释放。
是否有其它重启游戏的方法? 类似 location.reload() 这种初始的js对象都会释放的,干干净净的重启游戏
android 应用直接重启.这个问ai,能搞到大部分代码.
论坛也有应用重启的代码,但太久了,我就不知道哪里了.以前我参考过.
private static Handler handler = new Handler(Looper.getMainLooper());
public static void restartApp(@NonNull Activity activity) {
try {
String packageName = activity.getPackageName();
// 创建系统Intent
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setPackage(packageName);
// 设置标志
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
// 添加重启标识
intent.putExtra("RESTART_APP", true);
intent.putExtra("RESTART_TIMESTAMP", System.currentTimeMillis());
activity.startActivity(intent);
activity.finish();
} catch (Exception e) {
e.printStackTrace();
// 最后的备用方案
restartAppForce(activity);
}
}
/**
* 强制重启 (最彻底,支持多次)
*/
public static void restartAppForce(@NonNull Activity activity) {
try {
// 先正常结束Activity
activity.finish();
// 延迟后强制结束进程并重启
handler.postDelayed(() -> {
try {
// 获取应用包名
String packageName = activity.getPackageName();
// 使用PackageManager获取启动Intent
Intent intent = activity.getPackageManager()
.getLaunchIntentForPackage(packageName);
if (intent != null) {
intent.setFlags(0);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("RESTART_APP", true);
intent.putExtra("RESTART_TIMESTAMP", System.currentTimeMillis());
// 启动新Activity
activity.startActivity(intent);
}
// 结束当前进程
Process.killProcess(Process.myPid());
System.exit(0);
} catch (Exception e) {
e.printStackTrace();
}
}, 100);
} catch (Exception e) {
e.printStackTrace();
}
}
实测这样有效,不确定是否有什么风险