Android应用程序完全退出方案.doc

仅供专利申请使用 第 PAGE 9 页 共 NUMPAGES 9 页 confidential 专利申请技术交底书 一、 基本信息 发明名称:Android应用程序完全退出方案 二、 技术信息 1. 所属技术领域 在Android开发过程中,特别是界面比较多的情况下,常见的退出方式往往是不能完全退出这个应用,如果应用希望被退出的时候却不能够完全退出出去,此时就会造成系统资源的浪费。那些本应该被系统回收的资源却没有被系统及时的回收掉,依旧在内存中存在,占据着内存空间。 现有的常用手段去完全退出应用的方法是在应用程序里面我们开启了一个单例的集合ListActivity管理容器,每次打开新的Activity就把当前Activity加入到容器中,然后在需要完全退出的时,就循环遍历该容器分别关闭掉每个Activity,即达到完全退出功能。 虽然这种退出方式能够达到退出的目的,但是维护集合是一个很复杂的过程,并且由于集合持有了Activity的引用,导致了内存泄漏的问题。 本方案提出来一套更优的解决退出问题的方法。本方案中借助Activity的启动模式的特性来实现引用程序的完全退出。本方案由于没集合去持有Activity的引用,所以能够有效的避免内存泄漏的问题。同时很巧妙的借助Activity的启动模式的特性,来达到完全退出的目的。 本方案的完全退出方法具有一定的创新性,借助了启动模式的特性来让系统帮助我们实现完全退出的功能。 2. 名词解释 Activity:代指Android应用程序的一个界面 AndroidManifest.xml:是Android的一个描述文件,这个文件中存放的是Android的界面信息和权限信息等。这个文件的主要功能是应用程序的一个”说明书”,描述了整个应用程序的界面和权限等信息。 堆栈:在计算机领域,堆栈是一个不容忽视的概念,堆栈是两种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。要点:堆,队列优先,先进先出(FIFO—first in first out)[1] 。栈,先进后出(FILO—First-In/Last-Out)。 GC:GC(Garbage Collection):JAVA/.NET中的垃圾收集器。Java是由C++发展来的。它摈弃了C++中一些繁琐容易出错的东西。其中有一条就是这个GC。而C#又借鉴了JAVA。 Intent:Intent(意图)主要是解决Android应用的各项组件之间的通讯。Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。 3. 本发明技术方案详细描述,必要时应结合附图进行说明 本方案提出了一套能够优雅的完全退出应用程序的方法,由于不需要维持应用中的每个界面Activity的引用实例,所以本方案中不会出现内存泄漏的风险。 本方案巧妙的借助Android系统启动模式的特性来实现完全退出的功能。 Android启动模式: 1、standard模式: standard模式是默认的启动模式,不用为activity配置android:launchMode属性即可,当然也可以指定值为standard。 standard模式是所启动的Activity都是在同一个task容器栈下,不会重新创建新的task容器栈。先压入栈的Activity实例按顺序入栈底,后入栈在栈顶,处于栈的顶部Activity实例处于活动状态,其他处于非活动状态。按物理返回键,退出当前所处活动状态Activity窗口,这样就会从task容器栈中弹出,显示在手机主屏幕上,从而,有非活动状态转换成活动的状态。其次,standard容器栈可能会存在着相同的Activity实例,只有没调用一次startActivity方法(启动一个Android界面),就会创建目标Activity实例对象压入task容器栈。 2、singleTop模式 AndroidManifest.xml文件中activitylaunchmode属性配置singletop,那么启动实例化Activity,如果task容器栈顶存在已经激活的Activity实例,就会重用当前栈顶的Activity实例,不会再重新去实例化Activity对象。善于思考的朋友可能会问,如果要启动的目标Activity已经有实例化对象存在task容器栈里面,只是现在不处于栈顶,这样情况

文档评论(0)

1亿VIP精品文档

相关文档