У меня есть приложение, которое необходимо очистить из кеша и перезапустить программно.
Я пробовал с
Intent i = new Intent(this, MyActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
Но это не полностью очистит весь кэш, так как старый контекст каким-то образом извлекается.
Мне удалось реализовать некрасивый обходной путь, но я был бы рад, если бы было другое решение для этого:
Intent mStartActivity = new Intent(this, MyActivity.class);
int mPendingIntentId = 1122;
PendingIntent mPendingIntent = PendingIntent.getActivity(this, mPendingIntentId,
mStartActivity,PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmMgr =(AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
// Set the alarm that will invoke and start the activity after we
// killed the current process
alarmMgr.set(AlarmManager.RTC, System.currentTimeMillis()+10, mPendingIntent);
// Kill the application process, this will for sure clear up all
// memory!
android.os.Process.killProcess(android.os.Process.myPid())