Закрывать и вновь открывать приложение в Android (Рестарт Апп)

У меня есть в секции Конфигурация селектор, чтобы выбирать язык app, независимо от, что установился из-за системы, но я нахожусь, что для того, чтобы появился эффект во всем app, необходимо закрывать app и вновь открывать ее.

Код, чтобы выходить из app, использовал следующее:

Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("Exit me", true);
startActivity(intent);
finish();

и в MainActivity.java внутри события onCreate

if( getIntent().getBooleanExtra("Exit me", false)){
    finish();
    return; // add this to prevent from doing unnecessary stuffs
}

Извлеченный: SO

Update En activity 'SettingsActivity.java' обнаружил изменение селектора языка app и это сохранял в одном SharedPreference

@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
    if (key.equals("language")) {

        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
        String value = sp.getString(key, "default");
        UsefulFunctions.SetLocaleLang(getBaseContext(),value);

        Toast.makeText(this,
                getResources().getString(R.string.pref_need_restart_app),
                Toast.LENGTH_LONG).show();

    }
}

Чтобы загружать независимый язык, который применяется назначено по умолчанию, я использую следующее в каждом Activity

String value = PreferenceManager.getDefaultSharedPreferences(this).getString("language", "default");

    Locale locale = new Locale(languageToLoad);
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    this.getResources().updateConfiguration(config,
            this.getResources().getDisplayMetrics());

Но я нахожусь, что только применяется язык, если я перезагружаю снова activity, или если начинается снова app.

Только мне не хватало бы, как вновь открытие приложения автоматически. В принципе я это думаю, что с тревогой, которая бросала бы в себя XXX миллисекунд завершения, он бросил приложение, возможно?

Update2 Gráficamente груз активности и то, что я хочу реализовать, и poroblemas, что я нахожусь.

Нормальный

SplashActivity (finish)-> MainActivity (если touch backBtn он вытекает из app совсем)-> Settings-> FragmentGeneral (чтобы менять язык) => reiniciar_app

возобновлять app: проблема с back

Splaschreen (finish)-> MainActivity (когда он делается backBtn, он возвращает мне FramentGeneral, и натуральное состояло бы в том, чтобы он вытек из нее)

1
задан 23.05.2017, 15:39
2 ответа

Чтобы возобновлять полностью app, я это решаю устанавливая тревогу в систему для того, чтобы он бросил Приложение снова.

В MainActivity.java

if ( getIntent().getBooleanExtra("Exit me", false)) {

    Intent mStartActivity = new Intent(this, SplashActivity.class);
    int mPendingIntentId = 123456;
    PendingIntent mPendingIntent = PendingIntent.getActivity(this, mPendingIntentId,    mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT);
    AlarmManager mgr = (AlarmManager)this.getSystemService(ALARM_SERVICE);
    mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, mPendingIntent);

    finish();
    return; // add this to prevent from doing unnecessary stuffs

}

В моих доказательствах моем AcerZ200, поскольку в Asus TF101 app возобновляется, не воспринимая времени, но в моей Motorola G, когда закрывается app, он идет в экран HOME Android и 5 секунд спустя или иногда больше, он не открывается снова. (Я прихожу к заключению о том, что это не лучший способ это решать, но функционирует)

3
ответ дан 24.11.2019, 14:42

То, что осуществляется регулярно, состоит в том, чтобы реализовывать просто intent, чтобы открывать активность начала тебя aplicaciГіn:

Intent intent = new Intent(CurrentActivity.this, SplashScreen.class);
intent.putExtra("ValorExtra", true); 
startActivity(intent);
finish()

и немедленно реализовывать один finish(), чтобы закрывать ее aplicaciГіn, опционально, если ты нуждаешься в том, чтобы получить стоимость в bundle реализовывать какую-то acciГіn. Такие

Как добавочный комментарий в Blackberry OS 10, если несешь ты aplicaciГіn Android, вместо finish() ты должен закрывать с System.exit()

Другими выборами, чтобы закрывать ее aplicaciГіn, если ты считаешь нагруженной несколько активности в stack, он состоит в том, чтобы звонить просто:

 super.finish();

I

2
ответ дан 24.11.2019, 14:42
  • 1
    Это пытаться и # 233; посмотрим устанавливается хорошо язык, установленный suario, только несмотря на то, что инициализирует снова с SplasScreen – Webserveis 19.03.2016, 20:58
  • 2
    Быть и # 237; в хорошее знание немного м и # 225; s, поскольку ты меняешь язык, это может функционировать, но другой opci и # 243; n например он, если ты используешь adapter, ты можешь реализовывать изменение в свойства объектов, которые загружает adapter и и #250; nicamente выполнять adapter.notifyDataSetChanged (). – Jorgesys♦ 19.03.2016, 21:19
  • 3
    sit и # 250; в в начале app, но если я бросаю для atr и # 225; s он возвращает меня в активность, где бросается intent. Я попытался в и # 241; adir intent.setFlags (Intent. FLAG_ACTIVITY_CLEAR_TOP); и также intent.addFlags (Intent. FLAG_ACTIVITY_CLEAR_TOP | Intent. FLAG_ACTIVITY_NEW_TASK); intent.addFlags (Intent. FLAG_ACTIVITY_NO_HISTORY); Уже у меня есть м и # 225; s или меньше soluci и # 243; n – Webserveis 20.03.2016, 11:02
  • 4
    Тогда твой aplicaci и # 243; n сохраняй несколько активности в stack и одной, которая находится в верхнем уровне ах и # 237; ты хочешь возобновить. Помни tambi и # 233; n, который ты можешь использовать super.finish (). Если ты используешь flag Activity_no_history не, если ты желал, не сохраняли предыдущую активность в твоем app. – Jorgesys♦ 20.03.2016, 17:17
  • 5
    я изменил вопрос для того, чтобы остался м и # 225; s просвет то, что я хочу реализовать – Webserveis 20.03.2016, 19:04