Странная заставка Android при выходе - PullRequest
0 голосов
/ 28 февраля 2011

Я создал заставку для своего приложения для Android. Я пошел по маршруту с собственной активностью, отображая себя в виде всплеска, а затем загружая активность "MainMenu". Это работает хорошо, пока я не хочу выйти из приложения. Когда я нажимаю кнопку «Назад», я вижу окно MainMenu. Когда я нажимаю кнопку «назад» во второй раз ... Я не вижу заставку, я снова вижу MainMenu. Дополнительное «назад» завершит приложение.

Не приятно, есть ли хорошие советы о том, как избежать такого поведения? Лучше всего, конечно, было бы завершить приложение непосредственно при нажатии «назад» из «MainMenu», но я думаю, что тогда мне нужно заново смоделировать заставку, чтобы вместо этого быть частью этого действия?

Splashcode

   public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);
    Thread splashThread = new Thread() {
       @Override
       public void run() {
          try {
             Log.d("Trying","Tries");
             int waited = 0;
             while (waited < 5000) {
                sleep(100);
                waited += 100;
             }
          } catch (InterruptedException e) {
              Log.d("Catching", e.toString());
          } finally {
             finish();
             Intent i = new Intent(UEABB.this,MainMenu.class);
             UEABB.this.startActivity(i);
             startActivity(i);

          }
       }
    };
    splashThread.start();
 }

Привет

Ответы [ 2 ]

2 голосов
/ 28 февраля 2011

Попробуйте явно установить android:noHistory="true" для действия SplashScreen в файле manifest.xml. Я придерживался аналогичного подхода при разработке своей деятельности «Что нового».

<activity android:name=".activities.WhatsNewActivity"
    android:label="Version History" android:noHistory="true">
    <intent-filter>
       <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

Тем не менее, вам следует позвонить finish(), как только вы переключитесь на другое занятие.

1 голос
/ 28 февраля 2011

Ваше действие всплеска должно вызвать finish() сразу после запуска действия MainMenu.Это удалит его из стека, и это не должно мешать выходу из приложения.

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

...