`

app退出__2

 
阅读更多

1. 添加权限
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
2. 导入AppManager工具类
AppManager类是一个自定义的工具类,作用是将应用程序所有启动的Activity都添加到堆栈,最终退出应用程序时全部释放掉Activity。

完整的AppManager类代码:
package net.oschina.app;

import java.util.Stack;

import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;

/**
* 应用程序Activity管理类
* @author  liux
*/
public class AppManager {
       
        private static Stack<Activity> activityStack;
        private static AppManager instance;
       
        private AppManager(){}
        /**
         * 单一实例
         */
        public static AppManager getAppManager(){
                if(instance==null){
                        instance=new AppManager();
                }
                return instance;
        }
        /**
         * 添加Activity到堆栈
         */
        public void addActivity(Activity activity){
                if(activityStack==null){
                        activityStack=new Stack<Activity>();
                }
                activityStack.add(activity);
        }
        /**
         * 获取当前Activity(堆栈中最后一个压入的)
         */
        public Activity currentActivity(){
                Activity activity=activityStack.lastElement();
                return activity;
        }
        /**
         * 结束当前Activity(堆栈中最后一个压入的)
         */
        public void finishActivity(){
                Activity activity=activityStack.lastElement();
                if(activity!=null){
                        activity.finish();
                        activity=null;
                }
        }
        /**
         * 结束指定的Activity
         */
        public void finishActivity(Activity activity){
                if(activity!=null){
                        activityStack.remove(activity);
                        activity.finish();
                        activity=null;
                }
        }
        /**
         * 结束指定类名的Activity
         */
        public void finishActivity(Class<?> cls){
                for (Activity activity : activityStack) {
                        if(activity.getClass().equals(cls) ){
                                finishActivity(activity);
                        }
                }
        }
        /**
         * 结束所有Activity
         */
        public void finishAllActivity(){
                for (int i = 0, size = activityStack.size(); i < size; i++){
            if (null != activityStack.get(i)){
                    activityStack.get(i).finish();
            }
            }
                activityStack.clear();
        }
        /**
         * 退出应用程序
         */
        public void AppExit(Context context) {
                try {
                        finishAllActivity();
                        ActivityManager activityMgr= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
                        activityMgr.restartPackage(context.getPackageName());
                        System.exit(0);
                } catch (Exception e) {        }
        }
}
3. 使用AppManager工具类
Activity启动时,在的onCreate方法里面,将该Activity实例添加到AppManager的堆栈
AppManager.getAppManager().addActivity(this);
需要退出程序时,调用
AppManager.getAppManager().AppExit(this);
分享到:
评论

相关推荐

    android 退出app 退出应用程序

    退出app的两种方式 1 创建activity的基类,让所有的activity都继承该基类,在基类中创建一个静态的activity列表,并在oncreate方法添加该activity, 在退出时,遍历该list的activity,逐个关闭每一个activity,从而...

    ios app退出系统的源代码

    本文将围绕"ios app退出系统的源代码"这一主题,详细解析如何在iOS中实现类似功能。 首先,我们需要明确一点:在生产环境中,不应该使用这种方法,因为苹果的App Store审核指南明确禁止了这种行为。但是,为了理解...

    完美退出App的解决方案

    2. 切入后台finish掉App: 另一种方法是在App切到后台时,自动结束所有活动。这通常需要监听系统广播,比如ACTION_SCREEN_OFF(屏幕关闭)或ACTION_USER_PRESENT(用户解锁)。然而,这种方法可能导致用户体验下降,...

    按2次退出app

    以下就是关于"按2次退出app"这一功能的详细解释: 一、需求分析 在Android应用设计中,按两次返回键退出应用的需求源于用户体验和安全性考虑。它提供了一种防止用户意外退出应用的方法,因为只需一次按键就可能导致...

    【Android studio】service在app直接退出下,整体输出情况,实现开机自启动,一直后台运行

    总结,要在Android Studio中实现Service在app退出后继续运行并开机自启动,需要理解Service的生命周期,正确配置BroadcastReceiver,以及采取保活策略。同时,对App的卡死崩溃进行监控和处理,以提升用户体验和应用...

    深入BREW_APP创建,运行,退出机制.pdf

    ### 深入解析BREW_APP的创建、运行与退出机制 #### 一、概述 本文将详细探讨BREW_APP的创建、运行以及退出机制的关键技术细节。BREW(Binary Runtime Environment for Wireless)是一种用于开发无线设备应用的技术...

    AppCMS_v2.0_代码审计1

    2. **文件存在性检查**: - 在安装目录`/install`下,系统使用`file_exists()`函数检查`install.lock.php`文件的存在,如果存在则直接退出,避免了重复安装可能导致的安全问题。这种做法有助于防止重装漏洞,确保...

    深入BREW APP创建,运行,退出机制

    **深入BREW APP创建,运行,退出机制** BREW(Binary Runtime Environment for Wireless)是由 Qualcomm 开发的一个操作系统平台,主要用于移动设备,特别是早期的CDMA网络手机。BREW应用程序(APP)是为这个平台...

    苹果cms影视_APIcloud混合原生APP源码_四端同步 支持选集+缓存+下载

    选集功能允许用户在观看电视剧或动漫时自由切换不同集数,无需退出应用再次搜索。缓存功能则可以在用户有网络连接时预先下载视频,以便在无网络或者网络不稳定的情况下观看,提高了观影的流畅度。而下载功能则是让...

    cms影视_APIcloud混合原生APP源码_四端同步 支持选集+缓存+下载.zip

    选集功能则让用户可以方便地选择并切换不同的剧集,无需退出当前播放页面。秒播技术优化了视频加载速度,减少了用户等待时间。缓存和下载功能则让观众可以在没有网络连接时也能继续观看喜欢的影片,增强了用户体验。...

    android完美退出app的实例代码.pdf

    android完美退出app的实例代码.pdf

    监听打开/关闭APP

    监听打开/关闭APP 在接收动作的位置添加你所想要做的事情

    App Inventor应用:有趣的抽签App.pdf

    当用户选择“退出”时,我们可以退出抽签程序。我们可以通过组合“对话框”、“控制”和“数字”积木块来实现这个功能。 使用 App Inventor 制作一个抽签 App 需要经过多个步骤,包括绘制设计草图、素材准备、项目...

    安卓app开发项目-完全退出程序的方法(源码).zip

    安卓app开发项目-完全退出程序的方法(源码).zip安卓app开发项目-完全退出程序的方法(源码).zip安卓app开发项目-完全退出程序的方法(源码).zip安卓app开发项目-完全退出程序的方法(源码).zip安卓app开发项目-完全退出...

    iOS_App_Programming_Guide

    开发者应当学会如何负责任地编写后台应用,同时文档也提供了退出后台执行的选项。 最后,文档还讨论了应用性能调优的必要性,以及iOS环境对应用行为的多种影响。 整个文档是苹果开发者计划的组成部分,旨在帮助...

    Test-Restart-App.zip_DEMO_restart app

    - 守护进程:应用可以设置一个后台守护进程,当主进程退出时,守护进程会检测到并启动新的进程。 - 信号处理:通过捕获特定的系统信号(如SIGINT或SIGTERM),应用可以在接收到这些信号后执行清理操作并安排重启。...

    appcode keymap

    - **Step out**: 退出方法。快捷键:`F8`。 - **Run to cursor**: 运行至光标处。快捷键:`F9`。 - **Evaluate expression**: 评估表达式。快捷键:`F8`。 - **Resume program**: 继续程序执行。快捷键:`R`。 - **...

    仿微信3_APP_

    2. **即时通讯(IM)系统**:核心功能是单聊和群聊。要实现即时消息传递,需要构建一套稳定、高效的IM系统。这涉及到消息的发送、接收、存储和同步机制,以及在线状态管理,确保信息的实时性。 3. **数据加密**:为了...

    Android安卓app 让程序假退出,仍在后台运行.zip

    标题"Android安卓app 让程序假退出,仍在后台运行.zip"所涉及的核心知识点在于如何让应用看似退出但实际上仍在后台运行,这通常是为了实现某些特定的功能,如音乐播放、定时任务或者服务的持续运行。 一、Android...

    App_Alive-master.zip

    在iOS平台上,一个应用程序的生命周期包括启动、运行、暂停、后台运行、唤醒和退出等多个阶段。这些阶段由系统根据用户行为和系统资源管理自动控制。例如,`applicationDidFinishLaunching:`方法是在应用启动时调用...

Global site tag (gtag.js) - Google Analytics