如果用户按下主要活动的主页按钮或后退按钮,则每次都启动启动画面

时间:2015-11-05 11:37:49

标签: android splash-screen

我有两项活动。 1]闪屏 2] MainActivity

一旦启动屏幕任务移动到下一个MainActivity .. 但我的要求是..如果用户按下主页按钮或backPress。当用户再次恢复应用程序时,它应该以启动画面开始,而不是从MainActivity开始。

提前谢谢

4 个答案:

答案 0 :(得分:2)

我看到这里的每个答案都说要覆盖onResume()方法。这是一个坏主意。为什么?好吧,当你在MainActivity并且接到电话时,你仍然可以在后台看到活动,因为它处于onPause()状态。当您取消通话时,系统会调用onResume(),然后调用SplashActivity。这不是一个好的用户体验,也不是您可能想要的。

此外,在创建onResume()期间会调用MainActivity。因此,如果您将startActivity()代码放在onResume()中而不进行任何条件检查,那么您将永远不会看到MainActivity。 <{1}}将在创建SplashActivity时立即启动。


那么,如何实现你想要的呢?

  1. MainActivity开始MainActivity后,请不要SplashActivity finish()。让它保留在后堆栈中,因此当您按下后退按钮时,您将转到SplashActivity

  2. SplashActivity的{​​{1}}方法中设置一个标记,指出onStop()已最小化。然后在MainActivity中检查此标志并仅在设置此标志时启动MainActivity。这是为了确保应用程序最小化并且正在恢复。

  3. <强> MainActivity

    onStart()

答案 1 :(得分:1)

如果您在开始新活动之前没有完成活动,您将在返回时返回Splash活动。

覆盖OnResume并启动splash活动,以便在应用程序恢复时从启动时启动它。

@Override
protected void onResume() {
    super.onResume();
    startActivity(new Intent(this , SplashActivity.class));
    finish();
}

就像这样...

答案 2 :(得分:1)

  1. 按下主页按钮
  2. ejes=findobj(get(gcf,'children'),'Type','axes','visible','on'); posicion=get(ejes,'pos'); tam=length(posicion); for ii=1:tam a=posicion{ii}(2); vectorPos(ii)=a; end [valorMax,ind]=max(vectorPos); % min for choosing the phase plot axes(ejes(ind)) AndroidManifest.xml文件的 intent-filter 中使用Home作为类别

    SplashScreen
    1. 按下后退按钮
    2. 意图使用Splash Screen

      覆盖它们
      <intent-filter>
       ....
       //-- this will show up your app when home button pressed (like laucher)
       <category android:name="android.intent.category.HOME" />
      </intent-filter>
      
      1. 的onResume

        在进入运行状态@Override public void onBackPressed() { startActivity(new Intent(this , SplashActivity.class)); finish(); } 之前,根据this调用,所以如果你在OnResume调用了一些其他活动,则当前甚至无法启动它将直接执行意图声明,

答案 3 :(得分:0)

在MainActivity中试用此代码

@Override
    protected void onResume() {
        super.onResume();
        startActivity(new Intent(this , SplashActivity.class));
        finish();
    }

修改您可以在调用onResume时第一次使用flag来检测

int flag = 0;

并将您的onResume代码更改为:

@Override
    protected void onResume() {
        super.onResume();
        if(flag == 0) {
            flag = 1 ;
        }
        else {
            flag = 1 ;
            startActivity(new Intent(this, SplashActivity.class));
            finish();
        }
    }
相关问题