按下后退按钮时避免启动屏幕活动
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 流媒体继续运行?