【发布时间】:2014-05-17 10:28:06
【问题描述】:
嗨,在我的 android 应用程序中,每当我按下后退按钮时,我都会在此活动之后包含一个启动屏幕,它会转到 MainActivity 的前一页。但是如果用户按下 MainActivity 的后退按钮,我需要退出应用程序。但现在主要活动不是开始活动,启动屏幕是活动。所以我检查了一些方法,我看到了
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
这将清除以前的活动.. 但是在 MainActivty 为什么我需要一个意图.. 我给了
finish();
在每个活动的每个意图中,因此活动将被清除。但这会影响我的应用程序的整个结构.. 每当用户按下后退按钮时,应用程序就会进入主页。所以任何人都提出了一个解决方案.. 这样如果用户按下后退按钮,我就可以直接从 MainActivity 退出。
这是我的 mainActivity 后台代码
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
finish();
}
还有我的启动画面
WebView wv;
// Splash screen timer
private static int SPLASH_TIME_OUT = 4000;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_flash);
wv = (WebView) findViewById (R.id.webView1);
wv.setHorizontalScrollBarEnabled(false);
wv.loadUrl("file:///android_asset/Finally-320.gif");
new Handler().postDelayed(new Runnable() {
/*
* Showing splash screen with a timer. This will be useful when you
* want to show case your app logo / company
*/
@Override
public void run() {
// This method will be executed once the timer is over
// Start app main activity
Intent i = new Intent(SplashScreen.this, MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
// close this activity
finish();
}
}, SPLASH_TIME_OUT);
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
finish();
}
}
【问题讨论】:
-
使用
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);从SplashScreen调用MainActivity,不要在其他活动上调用finish方法,如果你想调用finish,你需要处理所有onBackPress -
但是在启动画面中添加有什么用..
-
当你在启动画面中使用它时,当主Activity启动堆栈的Activity是Clear时,所以如果你回击键应用程序将退出并且SplashActivity不会在你的应用程序中再次运行。
-
我需要把finish();在主要活动中
-
不,你不需要。请先尝试。
标签: java android back splash-screen