`
jk138
  • 浏览: 153814 次
  • 性别: Icon_minigender_1
  • 来自: 茂名
社区版块
存档分类
最新评论

Android程序的退出终于完美解决,兼容所有SDK

阅读更多

上网学了好多方法,关于Android的Activity如何退出。好多方法都不行啦,试了各种方法,下面这种方法就是我最喜欢的,简单又容易懂。


使用单例模式创建一个Activity管理对象,该对象中有一个Activity容器(具体实现自己处理,使用LinkedList等)专门负责存储新开启的每一个Activity,并且容易理解、易于操作,非常不错!

MyApplication类(储存每一个Activity,并实现关闭所有Activity的操作

 

public class MyApplication extends Application {


 private List<Activity> activityList = new LinkedList<Activity>(); 
 private static MyApplication instance;
 
            private MyApplication()
            {
            }
             //单例模式中获取唯一的MyApplication实例 
             public static MyApplication getInstance()
             {
                            if(null == instance)
                          {
                             instance = new MyApplication();
                          }
                 return instance;             

             }
             //添加Activity到容器中
             public void addActivity(Activity activity)
             {
                            activityList.add(activity);
             }
             //遍历所有Activity并finish

             public void exit()
             {

                          for(Activity activity:activityList)
                         {
                           activity.finish();
                         }

                           System.exit(0);

            }
}

 在每一个Activity中的onCreate方法里添加该Activity到MyApplication对象实例容器中

 MyApplication.getInstance().addActivity(this);
 

 在需要结束所有Activity的时候调用exit方法

 

MyApplication.getInstance().exit();
 

 

分享到:
评论
7 楼 myg_315 2011-11-25  
我也在调查这个问题,谢谢!
6 楼 jk138 2011-10-11  
谢谢各位的评论,楼下的建议很好,值得大家注意了.
5 楼 cyilinycc 2011-10-10  
非常感谢你提供的这个方法,但我经过测试之后,发现这个方法存在弊端,就是没有及时清空列表的activity记录,造成程序的内存只增无减。
比方说我有20个activity,那我跳转了100次,这个记录是100,但我只需要20,另外80个就是强占用内存的罪魁祸首!
通过MAT工具发现这个问题,建议在里面建立一个clearActivity的函数,负责remove某个被finish的activity,这样才能实现回收。
4 楼 ghy511024 2011-09-25  
大神 
3 楼 jayaaaiii 2011-09-16  
   真的非常感谢你。。我纠结4天的问题终于解决了。。。
2 楼 marquis 2011-09-02  
1 楼 administrator1616 2011-08-24  

相关推荐

    Android程序退出完美解决方案兼容所有SDK

    本文将深入探讨一种适用于所有SDK版本的Android程序退出的完美解决方案。 首先,我们要理解Android应用的生命周期。在Android系统中,一个应用程序是由多个Activity组成的,每个Activity都代表一个用户界面。当用户...

    Android sdk.zip

    例如,如果你的目标是确保应用兼容所有Android Oreo设备,那么你需要包括API级别26的SDK。而如果你想要利用Android Pie的新特性,就需要使用API级别28的SDK。 这些SDK平台的zip文件(如platform-26_r02.zip、...

    AndroidSDK资源2

    7. **Android Studio**:作为官方的集成开发环境(IDE),Android Studio集成了所有SDK组件,并提供了丰富的代码编辑、调试、性能分析等功能。标签"android studio"表明这个资源可能与使用Android Studio有关,可能...

    ImSDK-Android-CPP-7.0.3754.zip

    ImSDK,全称为Instant Messaging SDK,是专为即时通讯应用程序设计的一套开发工具包。在这个特定的版本——7.0.3754中,重点针对Android平台提供了C++接口,使得开发者能够更方便地在Android应用中集成聊天、群组等...

    Android SDK (android-TiramisuPrivacySandbox.zip)

    Android SDK(软件开发工具包)是开发者们进行Android应用程序开发不可或缺的工具集合。"android-TiramisuPrivacySandbox.zip" 文件很可能包含了针对Android Tiramisu版本的特定SDK组件,特别是与隐私沙盒(Privacy ...

    91助手SDK快速入门

    91助手SDK是一种为PC和手机软件开发商提供的跨平台设备应用安装及数据管理解决方案,开发者通过接入SDK,可以实现PC软件为用户手机安装移动版应用和数据管理的功能。这个SDK支持多种操作系统的设备,包括iOS和...

    设备网络SDK编程指南(Android)1

    - `NET_DVR_Cleanup`:在完成SDK的所有操作后,需要调用这个函数来释放占用的资源,防止内存泄漏和应用异常退出。 - **SDK本地功能** - 本地参数配置:这部分会详细介绍如何设置SDK的本地参数,如设备连接参数、...

    gobelieve_IM_SDK_android_sdk_

    总的来说,"gobelieve_IM_SDK_android_sdk_" 提供了一整套解决方案,让开发者能够在Android应用中快速实现强大的即时通讯功能,同时保持数据的自主性和安全性。通过深入研究和利用SDK提供的各种工具和资源,开发者...

    AdTouch广告平台Android SDK接口文档.doc

    这通常包括安装了Android Studio的开发机器,以及兼容AdTouch SDK的Android SDK版本。同时,开发者需要确保目标Android设备或模拟器已安装了相应的运行时环境,以便于调试和测试广告显示。 三、植入广告流程: 1. ...

    安卓XMPP聊天通讯Socket相关-eclipse版Android环信移动客服SDK.rar

    由于Android Studio已取代eclipse成为主流的Android开发工具,如果你还在使用eclipse,可能需要将SDK转换为兼容Android Studio的格式。这通常涉及到Gradle构建系统的集成和依赖库的迁移。 总结来说,"安卓XMPP聊天...

    中控SDK-Ver6.3.1.34

    中控SDK的新版本则成功解决了这一困扰,实现了对iface-702-p面部识别功能的完美兼容,极大地提升了设备的实用性和用户体验。 中控SDK的6.3.1.34版本不仅在硬件兼容性上有所提升,还可能包含以下关键改进: 1. **...

    Android-金山云android平台http缓存SDK可方便地与播放器集成实现http点播视频边播放边下载缓存功能

    该SDK支持后台下载功能,即使用户退出了播放器应用,视频下载也可以继续进行。这有助于在用户空闲时段充分利用网络资源,加快视频的缓存进度。 5. **断点续传** 当网络连接中断时,SDK支持断点续传,即从上次中断...

    Unity调用Android JAR

    - 在Unity应用退出时,确保释放所有已获取的唤醒锁,以防止资源泄漏。 7. **示例代码**: ```csharp using UnityEngine; using UnityEngine.Android; public class PowerManagerExample : MonoBehaviour { ...

    adb.zip(android sdk)

    adb,全称Android Debug Bridge,是Android SDK(软件开发工具包)的重要组成部分,主要用于开发者调试Android设备或模拟器。在版本1.0.41中,这个工具集可能包含了若干性能改进、修复了一些已知问题,以提供更稳定...

    数据采集SDK演变之路

    智能手机成为日常生活中不可或缺的一部分,几乎所有的活动——工作、学习乃至娱乐,都离不开手机及其应用程序(APP)。这种转变不仅为用户提供了一种前所未有的便捷体验,同时也产生了大量的数据。这些数据蕴含着...

    Android Studio使用中的问题及解决方法.pdf

    解决方法是在启动Android Studio之前,找到`idea.properties`文件,添加一行`disable.android.run.first=true`,然后保存退出。这样可以避免启动时的SDK更新检查。 ### 问题2:Gradle Build速度慢 Gradle构建过程...

    安卓 mqtt-sdk

    5. 高稳定性:由于已经过实际项目验证,SDK具有较高的稳定性和兼容性,能够适应各种运行环境。 三、使用步骤 1. 引入SDK:首先,需要在安卓项目中引入mqtt-sdk库,可以通过Gradle依赖或本地jar包导入。 2. 初始化...

    Android界面防劫持,Activity防劫持,无视Android系统版本限制,无需操作栈

    在Android应用开发中,安全问题始终是开发者关注的重点之一,特别是对于用户界面(UI)的保护,防止恶意软件或黑客的界面劫持攻击。...在实践过程中,务必注意兼容性问题,确保在各种Android系统版本上都能有效运行。

    VMware HTML 控制台 SDK 编程指南

    这意味着,通过这套SDK开发的应用程序可以在大多数现代移动和桌面浏览器上运行。 内容中还提到了一些具体的操作步骤和API方法,例如在网页上放置控制台、连接到远程VM(虚拟机)、断开连接以及摧毁会话等。这些步骤...

Global site tag (gtag.js) - Google Analytics