2015-01-31 3 views
2

У меня есть активность всплеска, которая должна появляться в течение короткого периода времени до запуска домашней активности. Это мой код:Как запустить активность заставки только тогда, когда приложение запустилось заново?

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 

public class SplashActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.splash); 



    /****** Create Thread that will sleep for 5 seconds *************/   
    Thread background = new Thread() { 
     public void run() { 

      try { 
       // Thread will sleep for 2.5 seconds 
       sleep(2500); 



       //Remove activity 
       finish(); 

       // After 2.5 seconds redirect to another intent 
       Intent i=new Intent(getBaseContext(),HomeActivity.class); 
       startActivity(i); 

      } catch (Exception e) { 

      } 
     } 
    }; 

    // start thread 
    background.start(); 


} 

@Override 
protected void onDestroy() { 

    super.onDestroy(); 

    } 

}

В настоящее время это работает отлично за исключением того факта, что, когда я возвращаюсь к исходному экрану (без явного убийства приложения), и возобновить его, он показывает заставку еще раз. Как обеспечить отображение заставки только при запуске приложения заново?

+0

Это немного неясно. Приложение запускается «свежо» с homeacreen, если активность была уничтожена (пользователь отжимает или ОС явно уничтожает приложение). Или приложение возобновляется, если пользователь нажимает кнопку «домой» или, например, получает звонок. Укажите, что вы имеете в виду: «Запустите приложение« Fresh ». Если вы имеете в виду каждый раз, когда создается новый экземпляр, мой ответ работает так, как вы его намереваетесь. – Marcus

+0

Что я имею в виду, если в настоящий момент не работает экземпляр приложения, я хочу отобразить экран заставки. После входа в приложение, если я нажму кнопку «домой», а затем нажмите значок приложения, я не хочу, чтобы экран заставки отображался, потому что существующий экземпляр приложения уже запущен. – SoulRayder

ответ

-2

Я предлагаю вам сохранить предпочтение, содержащее текущий timestamp в вашем методе SplashActivity onCreate(). При следующем открытии приложения, проверьте, превышает ли разность между сохраненной меткой времени и текущей меткой времени произвольное значение (своего рода льготный период) и решите показать/избежать заставки.

1

Используйте атрибут noHistory и excludeFromRecent в манифесте. Кроме того, добавьте флаги Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP в намерения, используемые для начала вашей реальной деятельности.

Редактировать: поместить android:launchMode="singleTop" в ваше реальное основное действие и использовать флаг намерения (в сочетании с другими) FLAG_ACTIVITY_NEW_TASK.

+0

Это работает, если я перехожу к какой-либо другой деятельности из дома, вернусь к домашней деятельности, перейдите на главный экран и нажмите значок приложения, но не работает, если я нажму кнопку домой из homeactivity, а затем нажмите на приложение значок. Не могли бы вы представить модификацию вашего ответа на основе моего описания здесь? – SoulRayder

+0

Все еще не совсем то, что я искал :( – SoulRayder

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