Как проверить, было ли перезапущено приложение? - PullRequest
0 голосов
/ 14 апреля 2020

Я сделал кнопку на моей главной панели инструментов, с помощью которой люди могут включать / выключать темный режим. Упражнение содержит нижнюю навигационную панель с фрагментами. Темный режим был реализован так:

 SharedPreferences sh = getSharedPreferences("DarkMode", MODE_PRIVATE);
 editor = sh.edit();
.
.
.

//switch case for the custom toggle button
 switch (current) {
            case LEFT:
                Toast.makeText(this,currentFrag,Toast.LENGTH_SHORT).show();
                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
                editor.putBoolean("DarkMode",true);
                editor.putString("FragName",currentFrag);
                editor.commit();
                recreate();
                break;
            case RIGHT:
                Toast.makeText(this,currentFrag,Toast.LENGTH_SHORT).show();
                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
                editor.putBoolean("DarkMode",false);
                editor.putString("FragName",currentFrag);
                editor.commit();
                recreate();
                break;
        }

И когда активность возобновляется, я меняю тему и раздуваю фрагмент в соответствии со значением в общих настройках, так что, например, если режим темный включен во фрагменте B, приложение перезапускает и раздувает фрагмент B, и если во фрагменте A отключается темный режим, приложение перезапускается и раздувает фрагмент A.

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        ModeBoolean = sh.getBoolean("DarkMode",false);
        if(AppCompatDelegate.getDefaultNightMode()==AppCompatDelegate.MODE_NIGHT_YES|| ModeBoolean) {
            setTheme(R.style.Sehat_style_dark);
        }
        else {
            setTheme(R.style.Sehat_style);
        }

        if(sh.getString("FragName","home").equals("home")) {
            fragment = new NewsHomeFragment();
            changeFragment(fragment, "home");
        }
        else {
            fragment = new StatsFragment();
            changeFragment(fragment, "stats");
        }

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

Вот скриншот приложения: -

App Screeenshot

...