猿问

强制应用程序重新启动第一个活动

由于未知原因,我无法正确地离开应用程序,因此当我再次按下主页按钮和应用程序图标时,我会恢复应用程序中的位置。我想强制应用程序在第一个Activity上重新启动。


我想这与onDestroy()或者onPause()有关,但我不知道该怎么做。


30秒到达战场
浏览 448回答 3
3回答

富国沪深

以下是使用PackageManager以通用方式重新启动应用程序的示例:Intent i = getBaseContext().getPackageManager()             .getLaunchIntentForPackage( getBaseContext().getPackageName() );i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);startActivity(i);

翻过高山走不出你

标记为“回答”的解决方案有效,但有一个对我来说至关重要的缺点。使用FLAG_ACTIVITY_CLEAR_TOP,您的目标活动将在您的旧活动堆栈收到onDestroy之前调用onCreate。虽然我已经在onDestroy中清除了一些必要的东西,但我不得不工作。这是对我有用的解决方案:public static void restart(Context context, int delay) {    if (delay == 0) {        delay = 1;    }    Log.e("", "restarting app");    Intent restartIntent = context.getPackageManager()            .getLaunchIntentForPackage(context.getPackageName() );    PendingIntent intent = PendingIntent.getActivity(            context, 0,            restartIntent, Intent.FLAG_ACTIVITY_CLEAR_TOP);    AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);    manager.set(AlarmManager.RTC, System.currentTimeMillis() + delay, intent);    System.exit(2);}我们的想法是通过AlarmManager触发PendingIntent,稍后会调用它,给旧活动堆栈一些时间来清理。

汪汪一只猫

android:clearTaskOnLaunch="true"android:launchMode="singleTask"在启动类(第一个活动)的清单文件中使用此属性。
随时随地看视频慕课网APP

相关分类

Android
我要回答