Скажите, была ли активность запущена из панели запуска или перемещена назад к кнопке назад - PullRequest
3 голосов
/ 23 марта 2011

Я пытаюсь во время onStart () определить, была ли моя активность запущена с домашнего экрана или «назад» с другой активности.

getIntent().hasCategory("android.intent.category.LAUNCHER")

не работает, так как намерение действия остаетсято же самое.

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

Есть ли способ сделать это?

Спасибо за любую помощь!-Chase

1 Ответ

1 голос
/ 23 марта 2011

Да, диалоговое окно можно запустить только тогда, когда основное действие запускается в первый раз, но я сохраняю состояние при мягком уничтожении.Таким образом, если вы сохраняете состояние в onSaveInstanceState для мягкого уничтожения, вы можете искать нулевой пакет в onCreate.Если пакет является нулевым, то это первый запуск.Если комплект не ноль, то вы возвращаетесь из мягкого уничтожения.Если вы сохраняете состояние в onRetainNonConfigurationState, то код выглядит так:

    // RESTORE STATE HERE
    // Save state in onStop (prefs) and onRetainNonConfigurationInstance (ConfuseTextState)
    state= (ConfuseTextState)getLastNonConfigurationInstance();
    if (state != null) {  // at least second pass, get non view state from onRetainNonConfigurationInstance
        try {               
            this.isShowCharCount= state.isShowCharCount;
                this.timeExpire= state.timeExpire;
                this.timeoutType= state.timeoutType;
                this.isValidKey= state.isValidKey;
                this.password= state.password;
                this.isAutoLaunch= state.isAutoLaunch;
                //Log.d(TAG,"restoredStateFromLastConfiguration");
        }
        catch(Exception e){
            Log.d(Utilities.TAG,"FailedToRestoreState",e);
        }
    }
    else { // first pass, get saved state from preferences on first pass if they exist
        // Restore preferences (8) on hard kill when USER hit back and killed us
        SharedPreferences prefs = getPreferences(MODE_PRIVATE); // singleton
        if (prefs  != null){...
        }   // else state is from xml files and default instance values
        // SUPPORT EASY LAUNCH
        if (isAutoLaunch){ // launch on first show only
            this.showDialog(DIALOG_EASY_LAUNCH); //<== SHOW YOUR ALERT HERE!
        }
    } 
...