如何通过编程重新启动安卓应用程序。

95

我正在尝试在我的应用程序中创建一个“注销”功能。基本上,通过注销,应用程序数据应该被清除。我想要做的是,在注销后,应用程序应该重新启动,以便可以再次输入凭据等信息。我遇到的问题是,在用户点击“注销”的时候,应用程序已经有3-4个活动正在运行,我不知道如何逐步返回它们。如何(模拟?)重新启动应用程序?


1
你如何保存应用程序数据? - kumar_android
在本地数据库以及JSON文件中,我已经成功清除了数据。 - Ryan
请查看以下问题/答案链接:https://dev59.com/33E95IYBdhLWcg3wEpvo - Zelldon
1
我想知道使用System.exit(0)重启应用程序并释放所有静态变量和销毁片段视图是否是良好的实践?如果不是,你能否给我建议正确的方法。我遇到了你曾经遇到的同样的问题。谢谢。 - Ishwor Khanal
您可以使用“restart_app”插件,该插件使用本机API在操作系统级别重新启动应用程序。 - Hossein Yousefpour
1个回答

70

查看意图属性,如无历史记录、清除返回堆栈等... Intent.setFlags

Intent mStartActivity = new Intent(HomeActivity.this, SplashScreen.class);
int mPendingIntentId = 123456;
PendingIntent mPendingIntent = PendingIntent.getActivity(HomeActivity.this, mPendingIntentId, mStartActivity,
PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager mgr = (AlarmManager) HomeActivity.this.getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, mPendingIntent);
System.exit(0);

1
工作解决方案 - Naveed Ahmad
2
同样的代码也适用于Nougat吗? - Tejas
它的功能完美无误,除了花费了2-3秒的时间,有没有什么办法可以缩短重启的时间? - Kishita Variya
4
@Kishita,我不这么认为。考虑到设置准确闹钟所需面临的困难,我很惊讶它在2019年居然能够运作。一些中国版ROM(例如OnePlus)会禁止这样的闹钟。 - Kathir
@Kishita 我看到了这篇文章,可能会对你有所帮助。不过我还没试过。 - Kathir
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接