Android 退出应用程序关闭

Posted

技术标签:

【中文标题】Android 退出应用程序关闭【英文标题】:Android exit app on close 【发布时间】: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();在主要活动中 不,你不需要。请先尝试。 【参考方案1】:

您的查询:

但是如果用户从 MainActivity 按下返回按钮,我需要退出应用程序。

为此,您需要在 MainActivity 中编写此代码

@Override
    public void onBackPressed() 
        finish();
    

更新:

将此行从应用程序中退出:

moveTaskBack(true);

【讨论】:

但我的第一个活动不是主活动,它是一个闪屏 试试这个:moveTaskBack(true);【参考方案2】:

像这样在onBackPressed() 中使用System.exit(0)

@Override
public void onBackPressed() 
   // TODO Auto-generated method stub  
   super.onBackPressed();    

   System.exit(0);

【讨论】:

以上是关于Android 退出应用程序关闭的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio - 如何(关闭,退出,退出,杀死等)应用程序[重复]

android studio项目启动画面无法正常关闭,应用程序运行完美但退出应用程序启动画面显示后,为啥[关闭]

当我关闭蓝牙服务器套接字或蓝牙套接字时,Android 应用程序意外退出

如何在主页中打开后退按钮 android 以退出应用程序并关闭反应本机导航侧菜单

转载android——彻底关闭——应用程序

Android 安全退出应用程序的方法总结