按下返回键时避免启动闪屏界面活动

26
在我的应用程序中,我有两个活动。首先是启动屏幕,它只显示应用程序名称和一些其他信息。在单击启动屏幕活动后,我正在加载主要活动。我的应用程序工作正常,但我面临一个小问题。如果我从主要活动按返回按钮,则控件将转到启动屏幕活动。但我不想再次显示启动屏幕活动,我想在按下“返回”按钮时避免启动屏幕活动。是否可能?如果可以,该如何处理?
6个回答

69
在你的AndroidManifest.xml文件中,在启动画面的<activity>中添加android:noHistory="true"属性。

谢谢,你能在你的答案中加上一点描述吗? - dsharew
7
  1. 使用LaunchMode:singleTask。
  2. 使用noHistory。
  3. 在从启动屏幕打开任何活动时,在调用后调用finish()。
  4. 在从启动屏幕打开任何活动时,为这些意图添加NEW_TASK和CLEAR_TASK标志。
- Abhinav Saxena

6

从您的描述中,我理解您希望在切换活动后不再显示启动画面。您需要注意到活动会保存在堆栈中,在启动新活动时会将其推入堆栈,并在完成时从堆栈中弹出。我认为,如果您在启动画面活动中调用finish()方法,问题就可以得到解决,在您调用StartActivity的地方插入finish()即可。

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

希望我能对您有所帮助:)


3
您可以直接调用


finish();

当您从闪屏跳转到第二个屏幕时。

0

我明白,您希望在点击返回按钮时不显示闪屏活动。首先,您应该知道Android上的所有活动都以堆栈的形式存在。因此,我们需要在执行完闪屏活动后结束它。我们可以通过在Android Studio中调用finish()方法来实现这一点。以下是解决方案:

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

0
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);


}}

0
除了以上的答案,你还应该注意以下几点:
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()方法,无论用户如何努力,您的闪屏活动都不会被强制退出。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接