`

Android2.2退出程序

 
阅读更多

在Android开发的时候,需要给某按钮或者某事件赋予完全退出程序的方法。

  Android中有一个很常用的方法是finish();

  finish()可以返回Activity堆栈中的上一个Activity,即pop(),如果当前Activity已是最底层的Activit则会退出程序。

  这就引出一个问题了:

  如果当Activity1 跳转到 Activity2 的时候,如果在Activity2中调用finish()其实只会回到Activity1而不是退出程序。这个时候调用finish显然就不行了。

  一般网上比较常见的说法是用:

System.exit(0);

 

或是

android.os.Process.killProcess(android.os.Process.myPid())

 

 

经过试验过后发现并无效果。

  其实以上方法在Android2.1中是可行的。

  2.2以后统统作废,几经折腾,终于觅得终极解决方案:

Intent startMain = new Intent(Intent.ACTION_MAIN);

startMain.addCategory(Intent.CATEGORY_HOME);

startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(startMain); System.exit(0);
这个方法很猛,可以直接回到android主界面,也算是可以解决一时只需了。

 

 

不过话说回来,这种退出的方式其实并不推荐。

  Android大多应用没有退出的设计其实是有道理的,这和系统对进程的调度机制有关系。如果你知道java,就能更清楚这机制了。其实和java的垃圾回收机制类似,系统有一个规则来回收内存。进行内存调度有个阀值,只有低于这个值系统才会按一个列表来关闭用户不需要的东西。当然这个值默认设置得很小,所以你会看到内存老在很少的数值徘徊。但事实上他并不影响速度。相反加快了下次启动应用的速度。这本来就是android标榜的优势之一,如果人为去关闭进程,没有太大必要。特别是使用自动关进程的软件。(这里解决了大家非要关进程的误区!)

  到这里有人会说了,那为什么内存少的时候运行大型程序会慢呢?其实很简单,在内存剩余不多时打开大型程序,会触发系统自身的调进程调度策略,这是十分消耗系统资源的操作,特别是在一个程序频繁向系统申请内存的时候。这种情况下系统并不会关闭所有打开的进程,而是选择性关闭,频繁的调度自然会拖慢系统。

那么,进程管理软件有无必要呢?有的。就是在运行大型程序之前,你可以手动关闭一些进程释放内存,可以显著的提高运行速度。但一些小程序,完全可交由系统自己管理。

  谈到这里,可能有的朋友会问,如果不关程序是不是会更耗电。我就说说android后台的原理,你就明白了。android的应用在被切换到后台时,它其实已经被暂停了,并不会消耗cpu资源,只保留了运行状态。所以为什么有的程序切出去重进会到主界面。但是,一个程序如果想要在后台处理些东西,如音乐播放,它就会开启一个服务。服务可在后台持续运行,所以在后台耗电的也只有带服务的应用了。这个在进程管理软件里能看到,标签是service。至于广播什么的我就不涉及了。所以没有带服务的应用在后台是完全不耗电的,没有必要关闭。这种设计本来就是一个非常好的设计,下次启动程序时,会更快,因为不需要读取界面资源,何必要关掉他们抹杀这个android的优点呢?(告诉我们如何合理使用进程管理软件)

  还有一个,为什么android一个应用看起来那么耗内存。大家知道,android上的应用是java,当然需要虚拟机,而android上的应用是带有独立虚拟机的,也就是每开一个应用就会打开一个独立的虚拟机。这样设计的原因是可以避免虚拟机崩溃导致整个系统崩溃,但代价就是需要更多内存。(跟塞班也不一样,安卓不容易死机重启)

  以上这些设计确保了android的稳定性,正常情况下最多单个程序崩溃,但整个系统不会崩溃,也永远没有内存不足的提示出现。大家可能是被windows毒害得太深了,总想保留更多的内存,但实际上这并不一定会提升速度,相反却丧失了程序启动快的这一系统特色,很没必要。

分享到:
评论

相关推荐

    VMware安装Android2.2-x86图文教程

    我们还可以使用键盘快捷键来快速地前进、后退和退出应用程序。 VMware 安装 Android 2.2-x86 图文教程可以帮助我们快速地安装和使用 Android 系统,并提供了一些实用的技巧和设置项来提高使用体验。 VMware 安装 ...

    android 完美退出程序

    ### Android完美退出程序详解 #### 一、引言 在Android开发过程中,有时我们需要实现一个“一键退出”功能,即用户点击某个按钮后能够迅速且干净地关闭整个应用程序。这不仅可以提升用户体验,还能确保程序资源...

    Android代码-基于Android2.2照相机Demo可以直接放到项目里使用.rar

    这个"Android代码-基于Android2.2照相机Demo可以直接放到项目里使用.rar"压缩包提供了一个适用于Android 2.2(API级别8)的相机功能演示示例。让我们深入探讨这个Demo包含的知识点,以及如何在实际开发中应用这些...

    VM虚拟机安装Android_2.2和设置虚拟SD卡

    2. 在“安装客户机操作系统”向导中,选择“安装程序光盘映像文件”并浏览到下载的android-x86-2.2-generic.iso文件。 3. 接下来,选择“其他”作为操作系统类型,然后选择“FreeBSD”作为版本,尽管它不是完全准确...

    完退出Android应用程序例子

    在Android操作系统中,退出应用程序并不是一个直接明了的过程,因为Android设计时考虑了资源管理和用户体验。通常情况下,用户点击返回键或应用切换器中的“关闭”按钮,应用并不会立即结束,而是进入后台运行状态。...

    Android程序完全退出的方法

    ### Android程序完全退出的方法 #### 一、引言 在Android开发过程中,有时我们需要让程序完全退出,而不是简单地关闭当前活动(Activity)。这在某些特定的应用场景下尤为重要,例如当用户点击“退出”按钮时,...

    android关闭应用程序

    这是在Android 2.2及更高版本中推荐使用的关闭应用程序的方法之一。 #### 2. 使用`Process.killProcess` 对于简单的进程终止,可以直接调用`killProcess`方法,但要注意这种方法会立即结束当前进程,可能导致数据...

    Android程序设计基础

     作为基于Linux的开源手机平台,Android包括一部手机工作所需的全部软件——操作系统、用户界面和应用程序,而且不存在任何以往阻碍移动产业创新的专有权障碍。谷歌公司与开放手机联盟合作开发了Android,这个联盟...

    Android中人为改变程序生命周期的研究.pdf

    Android 2.2版本中,开发者面临的一个挑战是如何人为地强制关闭应用程序。这是因为Android系统通常会管理应用的进程,以优化内存使用和用户体验。在默认情况下,即使用户退出应用程序,系统可能仍然保留其后台进程,...

    原创android界面效果全汇总.pdf

    根据提供的信息,我们可以总结出以下有关 Android 界面效果的关键知识点: ### 一、界面过渡动画(Transition Animation) #### 1.1 `...这些知识点对于提高 Android 应用程序的用户体验至关重要。

    Android001基于安卓的手机通讯录管理系统+毕业论文+开题报告+任务书+外文翻译等资料

    程序测试软件: Elcipse + Android2.2以上sdk版本 数据库: Android自带的SQLite数据库 系统功能设计: 用户进入手机通讯管理软件后,会看到联系人列表界面。联系人列表界面主菜单中包括添加联系人、搜索联系人、...

    Android NDK翻译之 NDK-GDB.html

    此外,确保已安装对应版本的SDK,如Android 1.5 r4、Android 1.6 r3、Android 2.1 r2和Android 2.2 r1。 当满足所有条件后,可在命令行中进入项目目录并运行`$NDK/ndk-gdb`命令开始调试。如果遇到错误,检查adb是否...

    android activity 动画切换

    在Android应用开发中,Activity是用户界面的基本单元,用于展示应用程序的不同屏幕或“视图”。当我们需要在不同的Activity之间进行切换时,为了提供更丰富的用户体验,可以加入动画效果。这不仅能够使应用看起来...

    Android精简面试总结

    - **挑战**:在Android 2.2及以上版本中,直接结束整个应用变得复杂。 - **策略**: - **抛异常强制退出**:这种方法会导致程序崩溃,通常不建议使用。 - **记录打开的Activity**:每次启动新Activity时进行记录...

    图解android发展历史

    同年,Android 2.2版本的发布,是Android在企业级市场的重要跨越。该版本增加了智能密码策略、远程擦除功能,以及对Exchange日历的兼容,使得Android在商务应用方面有了显著提升。 到了2010年9月,市场研究机构...

    Android基础教程

     《Android基础教程(第3版·修订版)》是一部关于Android开发的基础教程,采用Pragmatic系列图书一贯由浅入深、循序渐进的方式讲解了Android程序设计的核心概念和技术。书中不仅结合数独游戏开发案例形象生动地...

    Android_fr.pdf

    - **Android SDK**:Android SDK 包含了一系列的工具和库文件,用于构建、调试和部署 Android 应用程序。 #### 3.2 配置开发工具 - **配置 Eclipse 和 ADT**:在 Eclipse 中安装 ADT 插件,以便能够使用 Android ...

    最新Android面试题.pdf

    在Android 2.2及以上版本,直接结束应用的方法受到限制。一般不推荐使用killProcess()或System.exit(),因为它们可能导致数据丢失和用户体验问题。通常建议通过正常关闭Activity栈的方式退出应用。对于需要全局退出...

    图解Android手机发展史.doc

    同月,Android 2.2版本发布,增加了对企业级市场的支持,如智能密码策略、远程擦除功能,提升了Android在商业领域的竞争力。 2010年9月,市场研究机构Gartner预测,当年Android设备的出货量将超越苹果和黑莓,成为...

    android系统的搭建

    ##### 2.2 安装Android Studio - 双击下载好的安装包,按照提示完成安装过程。 - **注意事项**: - 在安装过程中,可以选择SDK的安装路径,避免默认安装到C盘,以免占用过多空间。 - Android Studio内置了Android...

Global site tag (gtag.js) - Google Analytics