Перезапустите приложение для Android с очищенным контекстным кешем - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть приложение, которое необходимо очистить из кеша и перезапустить программно.

Я пробовал с

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())
...