本文出自:http://www.mielf.net/featherelf/%E5%90%88%E7%90%86%E8%AE%BE%E8%AE%A1%E4%B8%BAandroid%E7%A8%8B%E5%BA%8F%E5%BC%95%E5%85%A5%E2%80%9C%E5%85%B3%E9%97%AD%E7%A8%8B%E5%BA%8F%E2%80%9D%E6%9C%BA%E5%88%B6
第一类(参考文的前两种方法):调用系统API直接结束进程,即调用“killProcess”或者“System.exit”。首先我在实验时,这两种方法根本不能工作,我是在Android2.2/2.3.3上做的实验,如果有谁在某个版本上实验成功,请通知我!还有一种也是类似的,并且需要权限android.permission.RESTART_PACKAGES,我没有去测试这个方法能否成功,因为我觉得如果一个程序都需要申请权限来退出,一定是非常不靠谱的事情。
第二类(参考文的第三种方法):这个解决方案已经比较接近羽毛的解决方式了,没有特别的坏处,只是这种每次调用Intent都清掉其他的Activity的方式不太灵活,而且整个代码的设计也不太好(通过一个Activity结束其他的Activity,有点破坏封装)。
所以,现在开始介绍羽毛自己的方案啦:
首先说,我的解决方案只是通过一些比较OO的巧妙设计来提供一个良好的退出机制,相当于自己封装了一个API,但是为了保证SDK的原始性,我并没有尝试把它hack进原生SDK中。另外这样的解决方案也绝不是“一键宏”,毕竟前文提到的“一键永逸”的方法也没有能工作的。
那么就来说说思路:Android变态的原生退出机制其实是当所有的Activity都finish以后,它的主程序就退出了(并不影响后台service)。而不知道什么原因,它没有提供直接退出的API。另外,在Android中,一个比较糟糕的设计,就是“返回键”的原生作用——从Activity的历史栈中将下一个Activity调出来。如果我们任由这样的返回键胡乱非为,就很可能打乱整个程序的业务逻辑——返回到过期页面。因此我们整个解决方案分为两部分:1、提供对所有打开的Activity的管理机制;2、重定义返回键的用途。
一、Activity管理机制:
考虑到这是一个全局的行为,因此我强烈建议大家在封装这个功能类的时候采用单态模式。具体做法是先设计一个功能类(单态的),在其中管理一个Activity的List,然后通过Add和Remove方法增删Activity,另外再提供一个Close方法结束所有的Activity。相信这么一说,大家都明白了吧,那么给出示例:
然而由于这并不是一项必不可少的行为,因此在初次使用过程中,很容易忘记调用这些API。那么接下来是讨论在哪里使用这些方法,很简单,在所有继承了Activity的类中,重载onCreate和onDestroy方法,并且在其中分别调用CloseMe的Add和Remove方法,这样的好处是你不需要在一个类中多次插入这些代码,以至于因为你的遗忘而漏管理了某个Activity,特别的,你在任何地方调用一个类的finish方法都可以通过onDestroy方法将该类从链表中删除。
分享到:
相关推荐
Android程序设计基础教程 (高凯 编著) Android程序设计基础教程
Android核心分析 Android Android程序设计
主要功能 当屏幕关闭时锁屏程序启动 绘制解锁图形解锁 设置解锁图形 如何设计android锁屏程序全文共27页,当前为第5页。 主要功能 设计自己的service 设计自己的activity页面 重载自己的view 如何设计android锁屏...
Android开发基于MVVM模型设计的BeatBox程序源码Android开发基于MVVM模型设计的BeatBox程序源码Android开发基于MVVM模型设计的BeatBox程序源码Android开发基于MVVM模型设计的BeatBox程序源码Android开发基于MVVM模型...
给Java初学者的Android程序撰写范例,相当实用。
android程序设计学习文档,第一章对于android程序设计的简单介绍。
Android 程序锁源码下载 摘要:Java源码,Android,Android,源码下载 Android 程序锁,Android小软件JAva源码下载,锁程序,锁屏用的,Java源码供Android程序开发者参考学习和交流
Android三维程序设计-基于OpenGL ES的图形应用程序设计.pdfAndroid三维程序设计-基于OpenGL ES的图形应用程序设计.pdf
《Android Studio应用程序设计》(第2版,课件只有一、二、三、四章的,各章节例题源代码齐全,word编辑可直接黏贴使用。
理解Android组件设计思想,对Android应用程序架构会有更好的认识。这一节讲Android组件化设计的背景、理念、原则,以及Android在OS级别上提供的组件化支持,其中还会包含一个实验来验证这种组件化设计思想,可以对...
毕业设计 程序 android 个人理财 本系统为基于Android平台的个人理财系统,主要模块: 用户信息管理模块:用户可以进行注册、登录、修改、删除,通过这些功能对用户资料有个基本的保护。 日常收支信息管理...
Android程序设计
android天气预报程序源码 实现了全国各城市天气信息的获取 可以展示最近六天的天气状况 对于android学习者有很大的帮助
Android应用程序主要由代码和资源组成。资源主要就是指那些与UI相关的东西,例如UI布局、字符串和图片等。代码和资源分开可以使得应用程序在运行时根据实际需要来组织UI。这样就可使得应用程序只需要编译一次,就...
android 离开与关闭程序弹出窗口--对话窗口上的ICON图标
android点击图标关闭屏幕,
android退出程序,便于快速开发使用!
一个简单的jni demo,意在学习如何在Android Studio中引入jni程序。