精华内容
下载资源
问答
  • android 退出app 退出应用程序

    热门讨论 2013-03-18 17:49:10
    退出app的两种方式 1 创建activity的基类,...这样就可以清除栈底之外的所有activity,程序会自动执行onNewIntent方法,在该方法中获取它action, 如果等于"exit_app",则关闭栈底activity,就可以退出App 详情请看代码
  • Android:销毁所有的Activity退出应用程序几种方式 author:DRC工作室  我们都知道,Activity是存放在栈中。在默认的情况下(standard)Activity在栈中是以先进后出、后进先出的方式进行存放。最开始出现的...


    Android:销毁所有的Activity退出应用程序几种方式


    author:DRC工作室 

    我们都知道,Activity是存放在栈中。在默认的情况下(standard)Activity在栈中是以先进后出、后进先出的方式进行存放。最开始出现的Activity会存在栈底,最新启动的Activity总是会存在栈顶。当我们开启的Activity越来越多,当前想在某个界面退出当前应用程序的时候,或者双击返回键退出当前应用程序。这个时候只能一个一个的把当前所有启动的Activity销毁,直到清空栈中的所有Activity,应用程序才能退出。下面给大家介绍四种常用的退出应用程序的方法,希望能够更好的帮助大家开发!


    销毁所有Activity,退出应用程序常见的方式有下面四种:



      (1) System.exit(0) 使用系统的方法,强制退出

      (2) 抛出异常,强制退出

      (3) 使用Application退出

      (4) 使用广播退出


    第一种方式 System.exit(0)表示的是终止程序,终止当前正在运行的 Java 虚拟机,在java中我们也使用这种方式来关闭整个应用,在前期很多开发人员都是使用这种方式,我自己在开发项目过程中也用过这种方式来退出,但是有时候会在部分机型中,当退出应用后弹出应用程序崩溃的对话框,有时退出后还会再次启动,少部分的用户体验不太好。但现在也依旧还会有少部分的开发人员会使用这种方式,因为使用方式很简单,只需要在需要退出的地方加上这句代码就行。


    第二种方式 抛出异常,强制退出 :这种方式现在基本上已经看不到了,用户体验比第一种方式更差,就是让抛出异常、是系统崩溃、从而达到退出应用的效果。


    <接下来我们主要讲解后面两种,这两种在开发过程中经常使用>

    第三种方式 使用Application退出 :目前比较常用方法之一,我们都知道application是Android的系统组件,当应用程序启动时,会自动帮我们创建一个Application,而且一个应用程序只能存在一个Application,它的生命周期也是最长的,如果需要使用自己创建的Application时,这个时候我们只需要在Androidmanifest.xml中的<Application> 标签中添加name属性:把创建的Application完整的包名+类名放进了就行了。

    那么我们如何使用Application来退出当前的应用程序呢?

    我们来看下我写的一个使用Application来退出应用程序的Demo:

    <创建一个继承Application的类>
    public class myApplication extends Application {
    private List<Activity> oList;//用于存放所有启动的Activity的集合

    public void onCreate() {
    super.onCreate();
    oList = new ArrayList<Activity>();
    }

    /**
    * 添加Activity
    */
    public void addActivity_(Activity activity) {
    // 判断当前集合中不存在该Activity
    if (!oList.contains(activity)) {
    oList.add(activity);//把当前Activity添加到集合中
    }
    }

    /**
    * 销毁单个Activity
    */
    public void removeActivity_(Activity activity) {
    //判断当前集合中存在该Activity
    if (oList.contains(activity)) {
        oList.remove(activity);//从集合中移除
        activity.finish();//销毁当前Activity
    }
    }

    /**
    * 销毁所有的Activity
    */
    public void removeALLActivity_() {
         //通过循环,把集合中的所有Activity销毁
    for (Activity activity : oList) {
         activity.finish();
    }
    }
    }

    <创建BaseActivity 继承 Activity> 用于管理所有的Activity,所有的Activity都继承这个类

    public class BaseActivity extends Activity {
    private myApplication application;
    private BaseActivity oContext;

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (application == null) {
        // 得到Application对象
        application = (myApplication) getApplication();
    }
    oContext = this;// 把当前的上下文对象赋值给BaseActivity
    addActivity();// 调用添加方法
    }

    // 添加Activity方法
    public void addActivity() {
    application.addActivity_(oContext);// 调用myApplication的添加Activity方法
    }
    //销毁当个Activity方法
    public void removeActivity() {
    application.removeActivity_(oContext);// 调用myApplication的销毁单个Activity方法
    }
    //销毁所有Activity方法
    public void removeALLActivity() {
    application.removeALLActivity_();// 调用myApplication的销毁所有Activity方法
    }

    /* 把Toast定义成一个方法  可以重复使用,使用时只需要传入需要提示的内容即可*/
    public void show_Toast(String text) {
    Toast.makeText(oContext, text, Toast.LENGTH_SHORT).show();
    }
    }


    <MainActivity 继承 BaseActivity 主界面---双击返回键,退出当前应用程序


    public class MainActivity extends BaseActivity {

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    }

            //绑定按钮
    public void button(View v) {

      startActivity(new Intent(MainActivity.this, oneActivity.class));//跳转到oneActivity
    }
    //重写onKeyDown方法
    public boolean onKeyDown(int keyCode, KeyEvent event) {

        //判断当点击的是返回键
        if (keyCode == event.KEYCODE_BACK) {
    exit();//退出方法
        }
        return true;
    }

    private long time = 0;

    //退出方法
    private void exit() {
    //如果在两秒大于2秒
    if (System.currentTimeMillis() - time > 2000) {
    //获得当前的时间
    time = System.currentTimeMillis();
    showToast("再点击一次退出应用程序");
    } else {
    //点击在两秒以内
    removeALLActivity();//执行移除所以Activity方法
    }


    }

    <oneActivity 继承 BaseActivity

    public class oneActivity extends BaseActivity {


    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.onelayout);
    }
    // 绑定按钮
    public void button(View v) {
    Intent intent = new Intent(this, MainActivity.class);//跳转到主界面
    startActivity(intent);
    }
    }

    androidmanifest.xml 清单文件>

    <application
            android:name="com.jxsw.chong.application_closeactivity.myApplication" //注册myapplication
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.jxsw.chong.application_closeactivity.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity android:name="com.jxsw.chong.application_closeactivity.BaseActivity" />
            <activity android:name="com.jxsw.chong.application_closeactivity.oneActivity" />

    </application>

        我们让每个Activity都继承于我们自己定义的BaseActivity,每次新开启个Activity,就会在BaseActivity的oncreate()方法中就会执行addActivity()方法,方法里面执行的是myApplication类中添加Activity的方法,把当前的Activity放进集合中,当连续点击两次back返回键,执行销毁所有Activity的方法。从而达到完全退出应用程序的效果。

    ps:一定不要忘记在androidmanifest.xml中注册myApplication

    <-----以上代码都可以直接复制粘贴可用   


    第四种方式 使用广播退出 :使用广播来实现退出应用程序,其实实现的思路相对于第三种更简单,我们编写一个BaseActivity,让其他的Activity都继承于它,当我需要退出时,我们就销毁BaseActivity,那么其他继承与它的Activity都会销毁。

    我们来看下我写的一个使用广播来退出应用程序的Demo:

    <BaseActivity>

    public class BaseActivity extends Activity {
    private MyBaseActiviy_Broad oBaseActiviy_Broad;


    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       //动态注册广播
        oBaseActiviy_Broad = new MyBaseActiviy_Broad();
        IntentFilter intentFilter = new IntentFilter("drc.xxx.yyy.baseActivity");
        registerReceiver(oBaseActiviy_Broad, intentFilter);
    }
    //在销毁的方法里面注销广播
    protected void onDestroy() {
       super.onDestroy();
       unregisterReceiver(oBaseActiviy_Broad);//注销广播
    }
    //定义一个广播
    public class MyBaseActiviy_Broad extends BroadcastReceiver {

    public void onReceive(Context arg0, Intent intent) {
    //接收发送过来的广播内容
    int closeAll = intent.getIntExtra("closeAll", 0);
    if (closeAll == 1) {
    finish();
    //销毁BaseActivity
    }
    }

    }
    /**
    * 显示Toast信息
    */
    public void showToast(String text) {
        Toast.makeText(this, text, 2000).show();
    }
    }

    <MainActivity>

    public class MainActivity extends BaseActivity {

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    }
    //绑定按钮
    public void button(View v) {
    Intent intent = new Intent(this, oneActivity.class);
    startActivity(intent);
    }
    //重写onkeydown方法
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    //点击的为返回键
    if (keyCode == event.KEYCODE_BACK) {
    exit();// 退出方法
    }
    return true;
    }


    private long time = 0;

    //退出方法
    private void exit() {
    if (System.currentTimeMillis() - time > 2000) {
    time = System.currentTimeMillis();
    showToast("再点击一次退出应用程序");
    } else {
    Intent intent = new Intent("drc.xxx.yyy.baseActivity");
    intent.putExtra("closeAll", 1);
    sendBroadcast(intent);//发送广播
    }
    }

    }

    <oneActivity>

    public class oneActivity extends BaseActivity {

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.onelayout);
    }

    // 绑定按钮
    public void button(View v) {
    Intent intent = new Intent(this, MainActivity.class);//跳转到MainActivity
    startActivity(intent);
    }
    }

        我经常使用的方式就上面两种,当然还有其他方式,我没有去研究,有其他更好的方式的,我们可以互相交流。共同进步嘛!

      ------------------------------------------------------完------------------------------------------------------

    展开全文
  • 如何完全退出android应用程序

    千次阅读 2013-04-24 21:01:14
    当一个android应用程序包含多个activity时,要完全退出android应用程序,便要销毁掉所有的activity,下面是一种网上流传的比较经典完美的方法:   首先要定义一个继承Application的类,代码及注释如下: //My...

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/8846680


    当一个android应用程序包含多个activity时,要完全退出android应用程序,便要销毁掉所有的activity,下面是一种网上流传的比较经典完美的方法:

     

    首先要定义一个继承Application的类,代码及注释如下:

    //MyApplication类用来存储每一个activity,并实现关闭所有activity的操作
    public class MyApplication extends Application {
     
    //定义容activity容器
     private List activityList = new LinkedList();
     private static MyApplication instance;
     
     private MyApplication(){}
     //单例设计模式中取得唯一的MyApplication实例
     public static MyApplication getInstance(){
      if(instance == null)
       instance = new MyApplication();
      return instance;
     }
     //添加activity到容器中
     public void addActivity(Activity activity){
      activityList.add(activity);
     }
     //遍历所有的activity并finish
     public void exitApp(){
      for(Activity activity : activityList){
       if(activity != null)
        activity.finish();
      }
      System.exit(0);
     }
     //清空缓存
     @Override
        public void onLowMemory() {
            super.onLowMemory();    
            System.gc();
       

     
    }

    其次要在各个activity的onCreate方法中加入如下代码:

    MyApplication.getInstance().addActivity(this);

    将该activity加入到activity容器中。

    最后,在实现退出应用程序的地方加入如下代码:

    MyApplication.getInstance().exitApp();

     

     

    关注我的新浪博客:http://blog.sina.com.cn/u/1921993171

    关注我的新浪微博:http://weibo.com/u/1921993171?wvr=5&wvr=5&lf=reg

     

    展开全文
  • 返回键退出程序与不退出程序应用

    千次阅读 2018-05-23 16:49:23
    今天公司老板突然跟我说客户这有一个需求想要实现一下,就是在使用app时,按返回键时,不退出应用程序,相当于home 键的功能,然后我就将退出程序的功能和不退出程序的功能进行了一个比较在这里。 1,首先是第一种...

        今天公司老板突然跟我说客户这有一个需求想要实现一下,就是在使用app时,按返回键时,不退出应用程序,相当于home 键的功能,然后我就将退出程序的功能和不退出程序的功能进行了一个比较在这里。

        1,首先是第一种:当按一次返回键就退出程序,当再次进入app,应用相当于重新进去;方法就是在 activity中什么都不用重写方法,直接实现所有的功能就可以;

        2,第二种:当按两次返回键时再退出程序,当再次进入app,应用相当于重新进入,到应用的初始位置,展示第一个activity,此方法不解释那么多,直接复制代码:

    // 再按一次退出程序
    /*public boolean dispatchKeyEvent(KeyEvent event) {
        if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent
    .ACTION_DOWN && event.getRepeatCount() == 0) {
            long current = System.currentTimeMillis();
            if (current - backPressTime > 2000) {
                backPressTime = current;
                Toast.makeText(MainActivity2.this, "再按一次退出程序", Toast.LENGTH_LONG).show();
            } else {
                App.getApp().quit();
                App.getApp().eqList = null;
            }
            return true;
        }
        return super.dispatchKeyEvent(event);
    }*/

    上面的方法中 需要调用一个系统的方法,并且判断两次按返回键的中间间隔时间不能超过2秒,超过两秒再此进行此方法

        3,第三种就是当按一次返回键时,返回主界面,但不退出应用程序,相当于home键效果,直接复制代码:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK){
            Intent i = new Intent(Intent.ACTION_MAIN);
            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            i.addCategory(Intent.CATEGORY_HOME);
            startActivity(i);
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
    在主activity中重写此方法,就可以完成。
    展开全文
  • WPF退出当前应用程序

    千次阅读 2013-05-20 21:23:57
    很多人认为关闭应用程序应该很简单,例如WindowsForm里一个Application.Exit();方法就可以解决问题,但在WPF里面可别滥用,因为WPF里Application类没有该方法,倒是有一个Exit的事件驱动,在WPF应用程序里面关闭程序...

     很多人认为关闭应用程序应该很简单,例如WindowsForm里一个Application.Exit();方法就可以解决问题,但在WPF里面可别滥用,因为WPF里Application类没有该方法,倒是有一个Exit的事件驱动,在WPF应用程序里面关闭程序讲究很多:

    在WPF应用程序的关闭是有ShutdownMode属性设置,具有3中枚举类型的值:

    1)OnLastWindowClose 应用程序最后一个窗体关闭时关闭应用程序

    2)OnMainWindowClose 应用程序主窗体关闭时关闭应用程序

    3)OnExplicitShutdown   显示调用关闭

    在OnExplicitShutdown模式下必须显示调用Application实例的ShutDown方法

    例如:Application.Current.Shutdown(-1);这里Application.Current返回当前应用程序的当前Application实例

             注意以上不适应XBAP,XBAP在浏览器关闭时自动关闭。


    在许多子窗体中关闭整个程序:

    winform实现:Application.Exit();

    WPF实现:Application.Current.Shutdown();


     另外,还有一种强制终止应用程序进程的方法

    Environment.Exit(0)可以立即中断程序执行并退出

    这个方法用起来的感觉类似在任务管理器里找到进程并终止,即立刻关闭进程,不管该进程目前有没有工作,在做什么工作。

    在WPF中调用该方法即立即退出,不会等待当前工作完成。

    展开全文
  • Android 怎么退出整个应用程序

    万次阅读 多人点赞 2012-06-24 21:25:42
    我们在写android应用程序时,经常会遇到想退出当前Acitivity,或者直接退出应用程序.我之前的一般操作是按返回键,或者直接按home键直接返回,其实这两种操作都没有关闭当前应用程序,没有释放系统资源。有时跳转的...
  • C#强制退出Widnwos应用程序

    千次阅读 2018-03-01 09:38:26
    //强制退出程序 Environment.Exit(0);
  • 退出 android 应用程序

    万次阅读 多人点赞 2011-06-29 15:00:00
    其实android的机制决定了用户无法完全退出应用,当你的 application 最长时间没有被用过的时候,android 自身会决定将 application 关闭了。 4. restartPackage 方法 ActivityManager manager = ...
  • Android 退出整个应用程序解决方案

    万次阅读 2013-10-14 16:17:35
    当然如果你的项目所有的界面都在打开另一个界面时被关闭就不存在这个问题了,但大多数情况下这样是很不合理的,因为每次要查看这个界面都需要重新加载数据。尤其对于需要走网络的数据显示,这不仅效率低而且成本高。...
  • Android 退出(应用程序)App的方法

    千次阅读 2018-06-25 10:00:28
    System.exit(0);//正常退出App
  • qt退出应用程序(exe)的方法

    万次阅读 2017-11-16 11:31:53
    首先退出应用程序(exe)的方法 方法1: QApplication* app; app->exit(0); 方法2: QApplication* app; app->quit(); 可以将以上方法加入到关闭程序的槽函数中 为了增加应用程序的人性化,在退出之
  • Mac 应用程序意外退出 movist pro 等

    万次阅读 2019-08-14 16:54:20
    我下载了个破解版的movist pro 播放器 ...提示应用程序意外退出 不止这个软件 其它软件遇到同样的问题也可以使用,原因貌似是证书的问题 解决办法: codesign --force --deep --sign - /Applications/name.app ...
  • c#退出应用程序办法

    千次阅读 2018-03-16 15:44:55
    c#退出应用程序办法: 1、Application.Exit();//好像只在主线程可以起作用,而且当有线程,或是阻塞方法的情况下,很容易失灵。 2、this.Close();//只是关闭当前窗体。 3、Application.ExitThread();//退出当前...
  • Qt:退出应用程序

    千次阅读 2019-03-11 23:52:19
    首先退出应用程序的方法有: QApplication* app; app-&gt;exit(0); 或者 QApplication* app; app-&gt;quit(); 可以在真正推出前做一些提示确认处理: if (!(QMessageBox::information(this,tr("...
  • Android随时随地退出应用程序

    万次阅读 2017-02-28 21:10:37
    // 用户选择Exit后集合中所有Activity.finish掉,从而退出程序 @Override public boolean onOptionsItemSelected (MenuItem item) { if (item.getItemId() == R.id.item_exit) { for (BaseActivity ...
  • SocketException: 由于线程退出应用程序请求,已放弃I/O操作" 解决方案
  • Android一键退出整个应用程序

    千次阅读 2014-10-28 10:33:50
    之前做FM时用到了一键退出整个应用程序的功能,通过查找和实践,现在在这里总结下如下解决办法. 首先编写一个工具类:AppClose.java package com.xxxx.fm; import android.app.Activity; import android.app....
  • cordova完全退出应用程序

    千次阅读 2015-08-09 02:43:38
    项目按如下代码注册后台按钮,但是发现exitApp并不能完全退出程序退出后再次进去程序不会显示启动画面。 document.addEventListener("backbutton...navigator.notification.confirm("是否退出程序?", function(butt
  • Android中实现一键退出应用程序

    千次阅读 2017-03-14 23:54:54
    编写不易,如有转载,请...思路  将所有的activity添加到list集合中,通过点击事件对list集合中的activity进行遍历退出,最后应用退出。Demo图片展示实现 创建一个ExitApplication类 对所有Activity进行管理 public c
  • 退出MFC应用程序的方法集

    千次阅读 2014-12-08 10:34:30
    每次自己写程序退出的函数时,总要找好长时间。这次搜集了一些,记录下来。不端更新下去 1、PostQuitMessage(0);//最常用 2、PostMessage(WM_QUIT,0,0);//最常用 3、 ::SendMessage(AfxGetMainWnd()->m_hWnd,WM_...
  • 主动退出iOS应用程序的一种方法

    万次阅读 2011-05-23 16:59:00
    iPhone的SDK只提供了以下的API退出应用程序:exit(0); 但是这种方法没有动画效果就直接退出程序,给用户的感觉是程序发生异常而退出了。网上还有一种退出程序的方法,就是使用未公开的API,这种方法更不靠谱,因为...
  • Android退出应用程序的最好方法

    千次阅读 2018-02-02 13:43:30
    然后在onKeyDown里做"再按一次退出程序"的逻辑. 网上也说了很多种退出app的方法, 比如拿单例管理Activity栈, 空指针, System.exit(0)等等.但是都没有接下来的方法好. 其实只需要你在推出MainActivity后, 把...
  • 主动退出iphone应用程序的一种方法

    千次阅读 2010-12-09 13:02:00
    iPhone的SDK只提供了以下的API退出应用程序:exit(0); 但是这种方法没有动画效果就直接退出程序,给用户的感觉是程序发生异常而退出了。网上还有一种退出程序的方法,就是使用未公开的API,这种方法更不靠谱,因为...
  • android 完全退出应用程序

    千次阅读 2012-11-19 17:02:22
    android退出应用程序会调用android.os.Process.killProcess(android.os.Process.myPid())或是System.exit(0),这只是针对第一个Activity(也就是入口的Activity)时生效。如果有A,B,C三个Activity,而想在B或C中...
  • android 安全退出应用程序

    千次阅读 2012-06-28 21:12:05
    正常关闭应用程序: 当应用不再使用时,通常需要关闭应用,可以使用以下三种方法关闭android应用: 第一种方法:首先获取当前进程的id,然后杀死该进程。 android.os.Process.killProcess(android.os.Process...
  • C# Win32控制台应用程序忽略 Ctrl + C,阻止程序退出,这里使用到了Windows API SetConsoleCtrlHandler函数注意:在VS中调试执行时,在处理程序例程中设置断点,不会中断;会提示:无可用源;完整示例代码:using ...
  • 退出流程: 子页面——&gt;主页面——&gt;退出登录——&gt;登录页面——&gt;完全退出 每个页面在关闭的时候都写了finish(),但还是会出现退出不完全的现象,例如: 子页面——&gt;主页面——&...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 558,831
精华内容 223,532
关键字:

怎么退出所有应用程序