2014-09-13 3 views
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); 

Это работает отлично, за исключением, что после того, как приложение будет перезапущен, у меня есть два основных вида деятельности (старый все еще остается). Как я могу решить эту проблему?

ответ

0

Add finish(); к вашей текущей деятельности

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); 
    finish(); 
    System.exit(2); 
+0

Да, это сработало. Не могли бы вы объяснить, в чем проблема, и как finish() может ее решить? tnx:) – elfar

+0

команда finish() сначала закроет вашу деятельность, потому что Android использует ActivityManager для обработки стека Activities, поэтому, когда вы не используете финиш(); сообщите, что он остался в живых в Stack (Activity Manager), и он будет всплывать снова всякий раз, когда ваше приложение запущено, что все для вашего ответа. –

+0

Но активность, выполняющая приведенный выше фрагмент кода, - это не что иное, как «основное» действие (которое перед применением вашего решения у меня было два экземпляра после перезапуска приложения). Поэтому finish() должен закрыться, чтобы сказать, что активность «Настройки» не является «основной». Между тем, что «Intent.FLAG_ACTIVITY_CLEAR_TOP» бесполезно? – elfar

Смежные вопросы