2014-01-31 5 views
1

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

ответ

0

Когда вы собираетесь на вторую активность после заставок, вызовите отделку()

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(); 

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

+0

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

+0

use shared preferences –

0

Использование совместно preeferences в андроиде и хранить значение 1-й раз .. из второй проверки времени, если экран значения присутствует дисплей Dont всплеска

Редактировать для предпочтения следовать this

-1

Для этого вы должны использовать 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 
    } 
+0

Не так ли? Почему тогда он занижен –

2

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

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

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

0

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

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); 

} 
0

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

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

B: Вы хотите, чтобы он отображал заставку при первом запуске приложения после установки, но больше никогда. (Обычно используется для просмотра «приветствия» или «начала работы»). Используйте параметр SharedPreference, как описано в других ответах здесь, или в документации Using Shared Preferences.В случае, если он должен показать всплеск, я все же предлагаю вариант A для простейшего способа не показывать экран заставки снова после его первого отклонения после первого запуска.

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

0

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

Intent intent = new Intent(this, HomeActivity.class); 
startActivity(intent); 
this.finish(); 
Смежные вопросы