Restarting Android app programmatically
android, android-intent
Solution
If you just consider to switch to your starting `Activity`, refer to Ricardo's answer. But this approach won't reset static context of your app and won't rebuild the `Application` class, so the app won't be really restarted.
If you want to completely restart your app, I can advise more radical way, using `PendingIntent`.
private void restartApp() {
Intent intent = new Intent(getApplicationContext(), YourStarterActivity.class);
int mPendingIntentId = MAGICAL_NUMBER;
PendingIntent mPendingIntent = PendingIntent.getActivity(getApplicationContext(), mPendingIntentId, intent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager mgr = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, mPendingIntent);
System.exit(0);
}
P.S. Tried your code in my project - works well with and without `finish()`. So maybe you have something specific about your Activity or Fragment, you haven't written.
Problem
This is a follow up question to this question: Force application to restart on first activity I am trying to restart my application from a fragment like that: ``` Toast.makeText(getActivity(), "Restarting app", Toast.LENGTH_SHORT).show(); Intent i = getActivity().getBaseContext().getPackageManager() .getLaunchIntentForPackage(getActivity().getBaseContext().getPackageName() ); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(i); getActivity().finish(); ``` The code does nothing. The `finish()` is the only thing working for some reason. If I remove the `finish()`, nothing happens. Why is that?