Backstack заставки Android

Я реализую заставку для приложения Android. Я хочу показывать заставку только один раз, когда приложение только что запущено. После того, как я сделал некоторую работу, я хочу перейти к приложению. Если затем пользователь нажимает кнопку «Назад», я не хочу, чтобы он возвращался к заставке, я просто хочу, чтобы приложение закрылось. Как я могу реализовать это наилучшим образом? Как очистить backstack первого действия.


person AlexanderNajafi    schedule 31.01.2014    source источник


Ответы (7)


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

  1. Вы запускаете приложение, вы получаете заставку.
  2. Затем вы перемещаетесь по приложению.
  3. Затем вы попадаете на главный экран своего приложения.
  4. Затем вы хотите выйти, но появляется заставка.

Если у вас возникла эта проблема, вам нужно завершить заставку, когда вы начинаете домашнюю активность, а также в конце вам нужно выйти из системы или завершить домашнюю активность приложения. Также попробуйте android:launchMode="singleTask" на вкладке активности заставки в манифесте Android.

person Harshal Benake    schedule 31.01.2014

Используйте общие настройки в Android и сохраните значение в первый раз.. со второго раза проверьте, присутствует ли значение, не отображайте заставку

Изменить для настроек следуйте это

person pavanmvn    schedule 31.01.2014

Когда вы переходите ко второму действию после заставки, вызовите finish()

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
if (preferences.getBoolean("firstTime", true)) {
    // Show splash screen
    // Wait a few seconds.
} else {
    // Nothing to do here. Go straight to the second activity.
}
SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(
            getSupportActivity()).edit();
editor.putBoolean("firstTime", false);
editor.commit();
startActivity(MainActivity.this, ...)
finish();

Таким образом, когда пользователь нажимает назад, в стеке не будет никакой активности.

person Aswin Rajendiran    schedule 31.01.2014
comment
Но я хочу показать заставку только один раз. Если пользователь закрывает приложение и возвращается, я хочу, чтобы он сразу перешел ко второму действию. - person AlexanderNajafi; 31.01.2014
comment
использовать общие настройки - person Aswin Rajendiran; 31.01.2014

Привет, попробуйте этот код, он поможет вам, но он будет показывать всплеск всякий раз, когда вы открываете приложение.

public class spash_scr extends Activity {

ImageView t;
//LoginButton b;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.spash_scr);
    // bm1=drawable.shineme;

    t = (ImageView) findViewById(R.id.textView1);
    t.setImageResource(R.drawable.shineme);

    RotateAnimation r = new RotateAnimation(0, 360,
            Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
            0.5f);
    // r.setStartOffset(1000);
    r.setDuration(2000);
    r.setFillAfter(true);
    t.startAnimation(r);

    new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            Intent i = new Intent(spash_scr.this, MainActivity.class);
            startActivity(i);
            finish();

        }
    }, 3000);

}
person Mohan    schedule 31.01.2014

Вы не совсем поняли точное поведение, поэтому вот несколько вариантов:

О: Вы хотите, чтобы заставка показывалась каждый раз, когда задача (приложение) перезапускается, например, после перезагрузки телефона, закрытия задачи пользователем вручную или когда Android удаляет ее из-за проблем с памятью. (Обычно это используется для брендинга или лицензирования логотипов.) В таких случаях запустите заставку из onCreate() основного действия, затем завершите () экран-заставку, чтобы позволить пользователю вернуться к основному виду. Таким образом, навигация назад не вернет активность всплеска, поскольку ее больше нет в стеке навигации.

B: Вы хотите, чтобы заставка показывалась при первом запуске приложения после установки, но никогда больше. (Обычно используется для просмотра справки «Добро пожаловать» или «Начало работы».) Используйте параметр SharedPreference, как описано в других ответах здесь или в Использование общих настроек. В случае, если он должен показывать заставку, я по-прежнему предлагаю вариант А для простейшего способа не показывать заставку снова после того, как она будет закрыта после первого запуска.

C: Еще более неизвестная сложная навигация? Узнайте о задачах и обратном стеке, и вы сможете это сделать делай почти все, что хочешь.

person Jon Adams    schedule 21.02.2014

После открытия нового действия this.finish (); вы должны сделать

Intent intent = new Intent(this, HomeActivity.class);
startActivity(intent);
this.finish ();
person g89n7man    schedule 25.05.2017

Для этого вы должны использовать SharedPreferences ,

 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    if(!prefs.getBoolean("first_time", false))
    {
        SharedPreferences.Editor editor = prefs.edit();
        editor.putBoolean("first_time", true);
        editor.commit();
        Intent i = new Intent(splash.this, otherSplash.class);
        this.startActivity(i);
        this.finish();
    }
    else
                // Not firsttime Direct it as you wish
    }
person Viswanath Lekshmanan    schedule 31.01.2014