0

Таким образом, в общем общем подходе к брызгам деятельности Screen-то вроде этого:Заставка не перезапуск при перезапуске после памяти приложения собрана

public class SplashActivity extends Activity 
    @override 
    protected void onResume() { 
    //Create a thread 
    new Thread(new Runnable() { 
      public void run() { 
       //Do heavy work in background 
       ((MyApplication)getApplication()).loadFromDb(); 
       startActivity(new Intent(SplashActivity.this,  MainActivity.class)); 
       finish(); //End this activity 
      } 
     }).start(); 
    } 
} 

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

Edit1: Btw, я пробовал настройку android: clearTaskOnLaunch = "true" для Activity Splash Screen, но это, казалось, ничего не делало.

+0

В манифесте зарегистрировать свой экземпляр приложения: <приложение Android: имя = «fullinstanceclass» ...> в OnCreate запуска экземпляра прикладной ваш всплеск? – d3n13d1

+0

@ d3n13d1, но как это будет происходить с активностью MAIN/LAUNCHER ... в настоящее время я отмечаю действие SplashScreen как таковое. –

ответ

1

Так я понял, решение, которое работает:

Продлить Application класс, добавить логическое поле isSplashInitialized и установите его в false приложении onStart. Затем в вашей деятельности Splash, когда вы закончите свой материал инициализации внутри него, перед вызовом finish() установите поле приложения isSplashInitialized в true. Затем у вас есть класс BaseActivity, который распространяется на все ваши действия. В ней распространяются onCreate() и после вызова super.onCreate(); сделать следующее:

if (!(this instanceof SplashActivity) && !MyApplication.getIntance().isSplashInitialized()) { 
    Intent intent = new Intent(this, SplashActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
    startActivity(intent); 
    finish(); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^