【问题标题】:Avoid splash screen activity when pressing Back button按下后退按钮时避免启动屏幕活动
【发布时间】:2014-01-22 21:25:06
【问题描述】:

在我的应用程序中,我有两个活动。首先是一个启动屏幕,它只是显示应用程序名称和一些其他信息。

单击启动屏幕活动后,我正在加载主要活动。我的应用程序运行良好,但我面临一个小问题。如果我从我的主要活动中按下后退按钮,控制将启动闪屏活动。但我不想再次显示闪屏活动,我想在按下后退按钮时避免闪屏活动。

有可能吗?如果有怎么办?

【问题讨论】:

    标签: java android android-activity splash-screen


    【解决方案1】:
    public class Splash extends AppCompatActivity {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        Handler hd = new Handler();
        hd.postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent i = new Intent(Splash.this,MainActivity.class);
                startActivity(i);
               
    
                  #by calling finish() method,splash activity will close after execution
    
                  finish();
            }
        },3000);
    
    
    }}
    

    【讨论】:

      【解决方案2】:

      我了解,您希望在单击后退按钮时不显示启动活动。首先你应该知道android上的所有activity都是STACK的形式。所以我们需要在它执行后结束启动活动。我们可以通过在 android studio 中调用 finish() 方法来做到这一点。这是解决方案:

      Intent intent = new Intent(MainActivity.this, home.class);
      startActivity(intent);
      finish();
      

      【讨论】:

        【解决方案3】:

        除了以上答案,你还应该注意 那:

        1:通过调用finish()方法,Splash活动 将在执行后关闭,这意味着它不会 在堆栈中可用。

        @Override
        protected    void    onCreate(Bundle saveInstsnceState){
        super.onCreate( saveInstanceState);
        
        \\ do something here
        Intent    intentSplash    =    new Intent(SplashActivity.this,    NextActivity.class);
        StartActivity(intentSplash);
        finish ();
        }
        

        您将使用上述方法实现您的目标 但是……

        2:如果你想阻止你的用户强制 退出应用程序(按返回按​​钮),而 飞溅活动仍在进行中,这是最好的 在android中练习,然后你需要调用 onBackPressed() 方法。

        Class NoBackSplash{
        
        @Override
        protected    void    onCreate(Bundle saveInstsnceState){
        
        super.onCreate( saveInstanceState);
        \\ do something here
        Intent    intentSplash    =    new Intent(SplashActivity.this,    NextActivity.class);
        StartActivity(intentSplash);
        finish ();
        }
        
        @Override
        public  void  OnBackPressed(){
        
        };
        
        }
        

        使用此 OnBackPressed() 方法,无论用户如何努力,您的启动活动都不会被强制退出。

        【讨论】:

          【解决方案4】:

          你可以打电话

          finish();
          

          在您跳转到第二个屏幕时的初始屏幕中。

          【讨论】:

            【解决方案5】:

            据我了解,您希望在更改活动后不显示启动活动。您应该注意活动保存在堆栈上,并开始新的活动推送,完成后您会弹出顶部堆栈。我认为,如果您调用 finish() 方法,您的问题会像在启动屏幕活动中一样在您调用 StartActivity 之后插入 finish()

            public void onClick(View v) {
                Intent intent = new Intent(Main.this, Splash.class);
                startActivity(intent);
                finish();
            }
            

            希望有用:)

            【讨论】:

              【解决方案6】:

              在您的AndroidManifest.xml 文件中,在初始屏幕<activity> 中添加android:noHistory="true" 属性。

              【讨论】:

              • 谢谢,您能在回答中添加一些说明吗?
              • 1.使用启动模式:singleTask,2. 使用 noHistory,3. 从闪屏打开任何 Activity 时,调用后调用 finish(),4. 从闪屏打开任何 Activity 时 addFlags NEW_TASK 和 CLEAR_TASK 在这些意图中的 Inent 标志。
              猜你喜欢
              • 1970-01-01
              • 2018-07-08
              • 1970-01-01
              • 2013-08-08
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多