按下后退按钮时避免启动屏幕活动

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案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 标志。

以上是关于按下后退按钮时避免启动屏幕活动的主要内容,如果未能解决你的问题,请参考以下文章

避免按下返回按钮时图像闪烁

当按下屏幕或手机上的后退按钮时,如何使 Android 中的 MP3 流媒体继续运行?

用户返回活动时 Videoview 未启动

在Android上按下后退按钮时Runnable线程会发生啥?

在父活动上按下后退按钮

在android中按下后退按钮后如何返回相同的选项卡?