java - 如何在 android oreo 和更高版本的设备中重启应用程序?
问题描述
我可以在低于 android oreo 的设备中重启应用程序,我的问题是,如何使用 Kotlin 或 Java 在 oreo 和更高版本的设备中执行重启?
val intent = Intent(applicationContext, MainActivity::class.java)
val mPendingIntentId = 1000
val mPendingIntent = PendingIntent.getActivity(applicationContext, mPendingIntentId, intent, PendingIntent.FLAG_CANCEL_CURRENT)
val mgr = applicationContext.getSystemService(Context.ALARM_SERVICE) as AlarmManager
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, mPendingIntent)
System.exit(0)
解决方案
System.exit(0) 不是最好的方法,因为您不能期望在您的应用程序下运行的当前线程的状态,它可能导致文件损坏问题。试试这个:
Intent intent = new Intent(context, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
Runtime.getRuntime().exit(0);
推荐阅读
- javascript - 如何使用 TypeScript 在 useRef 挂钩中键入函数
- c# - 在 .net 核心的自定义模型绑定器中验证嵌套的 Json 对象
- angular - 在 Liferay 中调整 Angular 应用程序时出错
- python - 使用双缓冲时的滚动条动画
- python - 计算值在熊猫数据框中的列中的每个备用实例中出现的次数
- javascript - Sequelize - 请手动安装 mysql2 包
- algorithm - 传统的 Fletcher/Adler 校验和算法是最优的吗?
- javascript - 在 switch 中使用 lint 的问题 - 使用三元运算符的情况
- reactjs - Map 不是 React 返回中的函数
- c++ - 如何在编译时创建一个带有 string_views 序列的 constexpr 数组?