退出app_android退出app - CSDN
  • android 退出app 退出应用程序

    热门讨论 2020-07-30 23:30:38
    退出app的两种方式 1 创建activity的基类,让所有的activity都继承该基类,在基类中创建一个静态的activity列表,并在oncreate方法添加该activity, 在退出时,遍历该list的activity,逐个关闭每一个activity,从而...
  • 退出App的几种方法

    2016-03-17 15:49:42
    查阅了些资料,要完全退出App,最常用的方法是:1.将activity放入一个list集合,然后遍历关闭。 具体步骤如下: 1)创建一个activity管理类:ActivityCollector 定义三个共有静态的方法;定义存储activity的list...

    查阅了些资料,要完全退出App,最常用的方法是:

    1.将activity放入一个list集合,然后遍历关闭。
    具体步骤如下:
    1)创建一个activity管理类:ActivityCollector
    定义三个共有静态的方法;定义存储activity的list集合。方法如下:
    ①addActivity:往集合里添加activity对象
    ②removeActivity:移除activity对象
    ③finishAll:增强for循环,遍历所有activity并销毁

    2)在baseActivity中
    ①onCreate方法中添加:ActivityCollector.addActivity(this).
    ②onDestory方法中添加:ActivityCollector.removeActivity(this).
    ③可以在任何一个集成baseActivity的activity中调用
    ActivityCollector.finishAll().
    从而关闭所有App.

    具体代码如下:

    public class ActivityCollector {  
        public static LinkedList<Activity> activities = new LinkedList<Activity>();  
        public static void addActivity(Activity activity)  
        {  
            activities.add(activity);  
        }  
        public static void removeActivity(Activity activity)  
        {  
            activities.remove(activity);  
        }  
        public static void finishAll()  
        {  
            for(Activity activity:activities)  
            {  
                if(!activity.isFinishing())  
                {  
                    activity.finish();  
                }  
            }  
        }  
    }  

    2.用singTask模式

    将主Activity的启动模式设置位singleTask:简单的说就是这个Activity重新回到栈顶部时,会把他上面所有Activity干掉,然后再把自己finish掉就退出程序了。不过这种方法会存在特殊情况,退不出程序!

    3.杀死后台进程

    上面说的是关闭所有Activity的,但是有些时候我们可能想杀死整个App,连后台任务都杀死 杀得一干二净的话,可以使用搭配着下述代码使用:

    /** 
     * 退出应用程序 
     */  
    public void AppExit(Context context) {  
        try {  
            ActivityCollector.finishAll();  
            ActivityManager activityMgr = (ActivityManager) context  
                    .getSystemService(Context.ACTIVITY_SERVICE);  
            activityMgr.killBackgroundProcesses(context.getPackageName());  
            System.exit(0);  
        } catch (Exception ignored) {}  
    }  

    4.双击退出程序

    方法一:定义一个变量,来标识是否退出

    // 定义一个变量,来标识是否退出
    private static boolean isExit = false;
    Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            isExit = false;
        }
    };
    
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            if (!isExit) {
                isExit = true;
                Toast.makeText(getApplicationContext(), "再按一次退出程序",
                        Toast.LENGTH_SHORT).show();
                // 利用handler延迟发送更改状态信息
                mHandler.sendEmptyMessageDelayed(0, 2000);
            } else {
                exit(this);
            }
            return false;
        }
    return super.onKeyDown(keyCode, event);}

    方法二:保存点击时间

    //保存点击的时间
    private long exitTime = 0;
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            if ((System.currentTimeMillis() - exitTime) > 2000) {
                Toast.makeText(getApplicationContext(), "再按一次退出程序",
                        Toast.LENGTH_SHORT).show();
                exitTime = System.currentTimeMillis();
            } else {
                            exit();
                          }
            return false;
        }
            return super.onKeyDown(keyCode, event);
    }
    展开全文
  • Android -- 退出整个App

    2018-06-19 16:42:58
    转载自: https://blog.csdn.net/u011967006/article/details/53669458一. 工具类public class ActivityManager { /** * 定义HashSet集合来装Activity,是可以防止Activity不被重复 */ private static HashSet...

    转载自: https://blog.csdn.net/u011967006/article/details/53669458

    一. 工具类

    public class ActivityManager {
    
        /**
         *  定义HashSet集合来装Activity,是可以防止Activity不被重复
         */
        private static HashSet<Activity> hashSet = new HashSet<Activity>();
    
        private static ActivityManager instance = new ActivityManager();;
    
        private ActivityManager() {}
    
        public static ActivityManager getInstance() {
            return instance;
        }
    
        /**
         * 每一个Activity 在 onCreate 方法的时候,可以装入当前this
         * @param activity
         */
        public void addActivity(Activity activity) {
            try {
                hashSet.add(activity);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 调用此方法用于退出整个Project
         */
        public void exit() {
            try {
                for (Activity activity : hashSet) {
                    if (activity != null)
                        activity.finish();
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                System.exit(0);
            }
        }
    
        // 此方法用于扩展使用
        /*
        public void onLowMemory() {
          super.onLowMemory();
          System.gc();
        }
        */
    
    }

    二. 调用

    (1)添加activity

    ActivityManager.getInstance().addActivity(this);

    (2)执行退出

    ActivityManager.getInstance().exit();
    The end!
    展开全文
  • Android 安全退出App完美实现

    千次阅读 2018-06-08 11:09:53
    本文主要介绍两种方式退出APP,一种是基于Activity的启动模式singleTask模式实现的,一种是基于全局Activity管理类实现的。强烈推荐第一种方法实现,简单又方便。 基于Activity的启动模式singleTask模式实现 ...

    本文主要介绍两种方式退出APP,一种是基于Activity的启动模式singleTask模式实现的,一种是基于全局Activity管理类实现的。强烈推荐第一种方法实现,简单又方便。

    • 基于Activity的启动模式singleTask模式实现
      singleTask是Activity启动模式中的一种,当startActivity时,它先会在当前栈中查询是否存在Activity的实例,如果存在,则将其置于栈顶,并将其之上的所有Activity移出栈。同时调用Activity的onNewIntent方法。可以看出实现安全退出APP很简单,只需要将MainActivity的launchMode改为singleTask,在MainActivity中的onNewintent方法中finish掉当前Activity即可。

    说下环境:MainActivity跳转到FirstActivity,FirstActivity跳转到secondActivity,在secondActivity中退出程序。
    首先,将MainActivity的launchMode改为singleTask,如下

     <activity
                android:name=".MainActivity"
                android:launchMode="singleTask">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>

    其次 实现MainActivity中的onNewIntent方法,实现退出APP的逻辑。

       @Override
        protected void onNewIntent(Intent intent) {
            super.onNewIntent(intent);
            String tag = intent.getStringExtra("EXIT_TAG");
            if (tag != null&& !TextUtils.isEmpty(tag)) {
                if ("SINGLETASK".equals(tag)) {//退出程序
                    finish();
                }
            }
        }

    这里面的tag用来标识关闭app的,在secondActivity中退出APP调用startActivity的时候需要传入。
    现在就看下secondActivity中相关代码

     Intent intent = new Intent(this, MainActivity.class);
                    intent.putExtra("EXIT_TAG", "SINGLETASK");
                    startActivity(intent);

    通过这三步就解决了安全退出APP的问题,现在很多人都在用,你还在等啥。

    • 基于全局Activity管理类实现

    说下环境:MainActivity跳转到FirstActivity,FirstActivity跳转到secondActivity,在secondActivity中退出程序。
    首先创建一个全局的Activity管理类 ActivityManager,里面有添加Activity,移除Activity,关闭activitys。ActivityManager的单例是用静态内部类实现的。贴下ActivityManager的全部代码

      package com.appexit.util;
    
    import android.app.Activity;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * Author:wang_sir
     * Time:2018/6/7 20:15
     * Description:This is ActivityManager
     */
    public class ActivityManager {
    
        private List<Activity> activityList = new ArrayList<>();
    
        private ActivityManager() {
        }
    
        public static ActivityManager getInstance() {
    
            return ActivityManagerHolder.Instantce;
        }
    
        /**
         * 静态内部类获取单例
         */
        static class ActivityManagerHolder {
            public static ActivityManager Instantce = new ActivityManager();
    
        }
    
        /**
         * 添加activity
         * @param activity
         */
        public void addActivity(Activity activity){
            if (!activityList.contains(activity)) {
                activityList.add(activity);
            }
    
        }
    
        /**
         * 移除activity
         * @param activity
         */
        public void removeActivity(Activity activity){
            if (activityList.contains(activity)) {
                activityList.remove(activity);
            }
        }
    
        /**
         * 关闭所有的activity,退出应用
         */
        public void finishActivitys(){
            if (activityList != null&&!activityList.isEmpty()) {
                for (Activity activity1 : activityList) {
                    activity1.finish();
                }
                activityList.clear();
            }
        }
    
    }
    

    其次是创建一个BaseActivity,所有的Activity都继承这个BaseActivity,在BaseActivity中实现添加Activity和移除Activity的操作,看代码

    package com.appexit;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.support.annotation.Nullable;
    import android.support.v7.app.AppCompatActivity;
    
    import com.appexit.util.ActivityManager;
    
    import java.lang.ref.WeakReference;
    
    /**
     * Author:wang_sir
     * Time:2018/6/7 20:11
     * Description:This is BaseActivity
     */
    public class BaseActivity extends AppCompatActivity {
    
        private WeakReference<Activity> weakReference = null;
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //将activity添加到列表中
    
            if (weakReference==null) {
                weakReference =  new WeakReference<Activity>(this);
            }
          ActivityManager.getInstance().addActivity(weakReference.get());
    
        }
    
    
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            //将activity从列表中移除
            ActivityManager.getInstance().removeActivity(weakReference.get());
        }
    
    
    
    
    }
    

    这里用到了弱引用,目的防止内存泄漏,因为ActivityManager有Activity的引用。

    当需要退出应用的时候直接调用ActivityManager中的关闭Activity的方法即可,看下secondActivity中的相关代码

      ActivityManager.getInstance().finishActivitys();

    至此两种安全退出APP的方法总结完了,都挺实用的,个人感觉还是第一种方法好。

    Demo地址:https://github.com/DevelopWb/AppExit.git

    展开全文
  • 退出App

    2015-08-12 11:00:09
    对话框退出App @Override public void onBackPressed() { new AlertDialog.Builder(this).setTitle("确认退出吗?") .setIcon(android.R.drawable.ic_dialog_info) .setPositiveButton("确定", n
    //1.对话框退出App
    @Override
    public void onBackPressed() {
        new AlertDialog.Builder(this).setTitle("确认退出吗?")
                .setIcon(android.R.drawable.ic_dialog_info)
                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
    
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // 点击确认后的操作
                        MainActivity.this.finish();
                        System.exit(0);
    
                    }
                })
                .setNegativeButton("返回", new DialogInterface.OnClickListener() {
    
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // 点击返回后的操作,这里不设置没有任何操作
                    }
                }).show();
        //super.onBackPressed();
        //2.再按一次退出
        private long exitTime = 0;
        @Override
        public boolean onKeyDown ( int keyCode, KeyEvent event){
            if (keyCode == KeyEvent.KEYCODE_BACK
                    && event.getAction() == KeyEvent.ACTION_DOWN) {
                if ((System.currentTimeMillis() - exitTime) > 2000) {
                    Toast.makeText(getApplicationContext(), "再按一次退出程序",
                            Toast.LENGTH_SHORT).show();
                    exitTime = System.currentTimeMillis();
                } else {
                    moveTaskToBack(false);
                    finish();
                }
                return true;
            }
            return super.onKeyDown(keyCode, event);
        }
    }
    展开全文
  • Android 中几种优雅的退出APP方式介绍

    万次阅读 2018-06-06 14:31:12
    最近由于项目的修改,项目由MainActivity按返回键一次退出修改为MainActivity中连续按两次返回键退出,顺便优化一下推出这里的代码。因此还是在网上搜索了一番,总结比较之后得出了有以下集中方式,优缺点都会提出来...
  • 关于app退出的问题,完美退出方式

    万次阅读 2017-06-20 10:07:35
    实际开发中会有很多关于app退出问题,我个人比较常见的有两种: 一、双击退出 比如说我们在首页的时候需要一个双击退出的方法,点击第一次手机的返回键时提示:“再点一次退出应用”。之类的话语,我们可以这样...
  • android中彻底退出App的办法

    千次阅读 2019-06-04 17:36:23
    所谓的“彻底退出App”的含义是包括释放所有App new出来的东西,比如说某些正在运行的线程、定时器之类的。 需要注意的是:finish()方法是作用于Activity,因此,即使finish了app的最后一个Activity,app在运行...
  • android 退出App也是一门艺术,很多App都是直接使用system.exit(0)的方法直接退出的,这样的话会给用户带来不好的体验,而且不能正确释放内存,用户还以为是App闪退了呢。那如何做到退出不给用户一种闪退的感觉呢?...
  • 用户不同意就会退出APP。同意了就跳转到首页。 那怎么才能判断用户下载APP,是否有同意使用呢。并且用户卸载重装后仍然会提示用户同意。 我们可以在用户点击同意时,保存一个关键词在本地。根据这个关键词是否存在...
  • 代码如下: ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); if( android.os.Build.VERSION.SDK_INT ){ am.restartPackage(getPackageName());...这样写能安全退出app吗?
  • uniapp、nativeJS、H5+退出APP应用(IOS+安卓) 点击此处文字,扫码进入此链接可阅读原文 直接扫码进入此链接可阅读原文 前言: 近几日使用uni-app 开发移动应用APP,在用户首次安装的时候,需要仔细阅读隐私政策后,...
  • Android实现点击两次退出APP 这两天在做一个项目碰到这么个问题,需要主界面点击两次直接退出整个APP而不是返回上一个界面,查找了网上的资料,整合和修改了一下写了这篇博客。 这里我主要以我的项目为例,...
  • uni-app 退出app操作

    千次阅读 2020-06-02 22:42:15
    uni-app 退出app //安卓退出 // #ifdef APP-PLUS if (plus.os.name.toLowerCase() === 'android') { plus.runtime.quit(); } else{ const threadClass = plus.ios.importClass("NSThread"); const ...
  • Android 退出 app 功能

    2019-09-04 09:05:09
    安卓如何实现点击一个按钮退出整个程序? Android 中几种优雅的退出APP方式介绍 ANDROID 完美退出APP的实例代码
  • Android开发心得-完全退出APP

    千次阅读 2013-01-08 11:27:25
    在A->B后,若想在B中直接退出APP,调用System.exit(0)或者android.os.Process.killProcess(android.os.Process.myPid()) 均不能完全退出App。 研究后,这个和Android UI的栈设计有关。 若想要退出整
  • Android 开发App中很常见的一种需求,连续按两次退出App.
  • 公司app开发,react-native(android)要实现点击手机物理键back返回和退出app功能,本人也是小白,不是很懂,但是作为一个app,这是基本功能,所以必须实现。下面两个方案的coding中有什么写的不好的地方请多多包涵...
  • 想必大家经常会遇到这种情况:当你想要退出APP时,按一次返回键,它会弹出”再按一次返回”。这个对于做APP的人来说,加上这样一个小功能,你的APP会显得高大上一点啦,下面小编教你如何简单实现这一功能 ps:此方法...
  • 在首页点击一次返回键直接就退出了,这种体验很不好,而且一般的APP都是需要按两次返回键退出,或者按一次返回键只返回桌面不结束进程,所以我研究了一下点击两次返回键退出APP的姿势~ 首先需要明确的是需要在APP的...
1 2 3 4 5 ... 20
收藏数 191,850
精华内容 76,740
关键字:

退出app