0
Я разрабатываю двуязычное приложение. Я хочу, чтобы он полностью перезапустился при изменении настроек языка. Вот код, я использую:Как перезагрузить приложение для Android в настройках?
Intent restartIntent = getBaseContext().getPackageManager()
.getLaunchIntentForPackage(getBaseContext().getPackageName());
PendingIntent intent = PendingIntent.getActivity(getBaseContext(), 0, restartIntent, Intent.FLAG_ACTIVITY_CLEAR_TOP);
AlarmManager manager = (AlarmManager) getBaseContext().getSystemService(Context.ALARM_SERVICE);
manager.set(AlarmManager.RTC, System.currentTimeMillis() + 1, intent);
System.exit(2);
Это работает отлично, за исключением, что после того, как приложение будет перезапущен, у меня есть два основных вида деятельности (старый все еще остается). Как я могу решить эту проблему?
Да, это сработало. Не могли бы вы объяснить, в чем проблема, и как finish() может ее решить? tnx:) – elfar
команда finish() сначала закроет вашу деятельность, потому что Android использует ActivityManager для обработки стека Activities, поэтому, когда вы не используете финиш(); сообщите, что он остался в живых в Stack (Activity Manager), и он будет всплывать снова всякий раз, когда ваше приложение запущено, что все для вашего ответа. –
Но активность, выполняющая приведенный выше фрагмент кода, - это не что иное, как «основное» действие (которое перед применением вашего решения у меня было два экземпляра после перезапуска приложения). Поэтому finish() должен закрыться, чтобы сказать, что активность «Настройки» не является «основной». Между тем, что «Intent.FLAG_ACTIVITY_CLEAR_TOP» бесполезно? – elfar