`
yangguangfu
  • 浏览: 1540821 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于android应用退出的问题

 
阅读更多

看到很多关于应用退出的问题,今天在这里为大家简单总结一下,如果说的不对还望大家见谅。

方法一:System.exit(0) 和android.os.Process.killProcess(android.os.Process.myPid()),我想很多人都尝试过,当关 闭多个Activity的时候这两个方法根本不起作用,原因当然和Activity的堆栈管理有关。

方法二:restartPackage,这种方法会终止一切和这个程序包关联的,所有共享同一uid的process被kill,所有   的activity会被removed所有创建的服务会停止,还会发一个广播 Intent.ACTION_PACKAGE_RESTARTED 。众所周知这个方法已经过时,2.2就不起作用了。

  1.     ActivityManager manager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);   
  2.     manager.restartPackage(getPackageName());
  3. <uses-permission android:name="android.permission.RESTART_PACKAGES"/>
复制代码

 

方法三:这个方法是2.2以后取代restartPackage的方法。但是google给的只是一个空壳,这个方法依然不起作用。

  1. activityManager.killBackgroundProcesses(packageName);
  2. <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>
复制代码

方法四:创建一个ActivityInstance单例模式来统一管理Activity的退出。这是一个很鸡肋的方法,因为它确实有用,但又这么写又有点浪费。

具体做法就是写一个ActivityInstance单例,在每一个activity启动的时候都调用它的ActivityInstance.addActivity(this);方法,当退出应用时,调用ActivityInstance.exit();方法。

  1. public void exit(){
  2.                                for(Activity at:activityList){
  3.                  at.finish();
  4.       }
  5.     System.exit(0);
  6. }
复制代码

方法五:发送广播退出。在需要结束应用时,发送一个特定的广播,每个Activity收到广播后关闭。如果不闲麻烦可以这样做,个人来讲还没有方法四好。
方法六:递归退出,在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。
方法七:退出的时候跳转回HOME,一种假的退出方法,但可以退出,该方法只是回到HOME页而将本身应用虚假退出。

  1.     Intent startMain = new Intent(Intent.ACTION_MAIN);
  2.                      startMain.addCategory(Intent.CATEGORY_HOME);
  3.                      startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  4.                      startActivity(startMain);
  5.                      System.exit(0);
复制代码

方法八: activityManager.forceStopPackage(PackageName);看到forceStop是不是感觉还挺熟悉的,我们系统设置里面关闭应用就是调用的这个方法。这个方法可以完全关闭应用程序而且只要一个包名。
不过这个方法是系统隐藏的,我们写应用的时候在ActivityManager里是找不到这个方法的。这就涉及到了调用系统隐藏API的方法。下面是通过反射机制来获取该方法。

  1. ActivityManager sd = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
  2. Method method= Class.forName("android.app.ActivityManager")
  3. .getMethod("forceStopPackage", String.class);
复制代码

补充:其实Android有自己的内存管理机制并不需要我们完全退出本身应用,当用户按退出键的时候用户回到HOME或其他相关界面即可。在没有特殊要求的时候虚假退出就可以。

分享到:
评论

相关推荐

    ANDROID 应用完全退出

    本文将探讨如何在Android应用中实现完全退出,以及解决引用Context未释放导致的OOM(Out of Memory)问题。 首先,理解Android应用的生命周期至关重要。在Android中,应用通常不会被完全关闭,而是进入后台状态,...

    UncaughtException不让Android应用异常退出

    "UncaughtException不让Android应用异常退出"这个主题,就是关于如何处理程序中的未捕获异常,以防止应用突然崩溃,从而提升用户体验。在这个问题上,我们可以从以下几个方面来探讨: 1. **...

    Android完全退出应用demo

    总结来说,完全退出Android应用需要理解Activity的生命周期,并结合使用如广播接收器、Intent标志、系统API等手段。开发者应该根据应用的具体需求选择合适的方法,并确保符合Android的设计原则,提供良好的用户体验...

    使用Application做android完全退出系统实例

    首先,我们要明白`Application`类是Android应用程序的基类,它在应用启动时最先被创建,并在整个应用生命周期内存在。我们可以通过重写`Application`类的方法,添加一些全局的初始化或清理操作。 **1. 创建自定义...

    Android退出整个应用的方法

    一个Android应用是由一系列的Activity组成的,这些Activity在栈中按启动顺序组织,形成了所谓的任务(task)。默认情况下,当用户按下后退键时,系统会按照栈的逆序依次销毁Activity,直至退出应用。因此,一种简单的...

    解决android退出整个应用的例子

    这个主题主要涉及Android应用程序的生命周期、Activity栈管理和进程管理。以下是对这一问题的详细阐述: 首先,理解Android应用程序的基本结构是至关重要的。一个Android应用通常由一个或多个Activity组成,它们在...

    Android-AppManager如何优雅的退出应用和处理崩溃异常自动重启

    在Android应用开发中,确保应用的稳定性和用户体验是至关重要的。`AppManager`是一个常见的工具类,用于管理和控制应用程序的生命周期。本篇文章将详细探讨如何使用`AppManager`优雅地退出应用,以及如何处理崩溃...

    Android退出应用测试

    下面将详细阐述Android应用退出的相关知识点。 1. **Android应用生命周期**: Android应用由一系列Activity组成,每个Activity有自己的生命周期,包括onCreate(), onStart(), onResume(), onPause(), onStop() 和 ...

    Unity3D中Android应用的退出脚本2

    总结来说,Unity3D中处理Android应用退出的方式需要考虑到平台的特定行为,以及提供良好的用户体验。使用`Application.Quit()`虽然简单,但可能不符合Android应用的常规操作,因此建议采用更加用户友好的方式,如弹...

    Android 应用程序异常退出自动重启

    Android 应用崩溃自动启动 给用户给好的体验 本应用还可以扩展为类似京东崩溃时弹出信息反馈框 这需要你自己实现哦 另外欢迎关注我的新浪微博@MinganCai 有问题可以@我 我会尽快给你们回复的 雷锋

    Android中一键退出应用程序

    一个Android应用由多个Activity组成,每个Activity有自己的生命周期,包括onCreate(), onStart(), onResume(), onPause(), onStop()和onDestroy()等方法。当用户按下设备的返回键时,Activity会按照这些生命周期方法...

    Android-AndroidActivity侧滑退出库

    标题 "Android-AndroidActivity侧滑退出库" 指的是在Android应用开发中,使用特定的库实现Activity的侧滑退出功能。这种功能常见于许多现代Android应用,它为用户提供了一种直观且易于操作的界面返回方式,类似于...

    Android应用开发多个activity完全退出程序方法

    在Android应用开发中,用户可能需要在完成一系列操作后彻底退出程序,特别是在处理完敏感信息或者需要节省系统资源的情况下。通常,一个Android应用由多个Activity组成,每个Activity代表一个独立的屏幕或功能。当...

    Android按两次返回退出应用的代码

    在Android开发中,为了让用户能够明确地退出应用,通常会实现一个功能,即连续点击两次返回按钮后退出应用程序。...通过合理的设计和优化,我们可以使这个功能在各种复杂的Android应用环境中都得到良好的应用。

    Android程序退出

    【Android程序退出】是关于Android应用生命周期管理的重要话题。在Android系统中,应用程序并不总是按照开发者预期的方式退出,因为系统可能会为了节省资源而自动暂停或杀死应用。理解如何优雅地退出Android程序对于...

    Android中实现再按一次返回键退出应用程序

    在Android应用开发中,通常我们希望用户在按下返回键时能够退出应用程序,但为了提供更好的用户体验,Android系统并不推荐直接在用户第一次点击返回键时就退出。为了实现“再按一次返回键退出应用程序”的功能,我们...

    Android-Android实现了可以滑动左侧边缘退出Activity的功能

    在Android应用开发中,滑动边缘退出Activity是一种常见的交互设计,它可以提供更加直观和便捷的用户界面体验。本文将深入探讨如何在Android中实现这一功能,主要涉及Android自定义手势识别、视图层级管理和Activity...

    完退出Android应用程序例子

    总之,实现完全退出Android应用程序通常涉及到对Activity生命周期的理解,以及可能的自定义事件监听。尽管这并不总是最佳实践,但在某些场景下是必要的。"ColseApp"项目可能提供了一个示例,展示了如何在多种Android...

    Android 程序安全退出

    在Android开发中,确保应用程序能够安全退出是至关重要的。安全退出不仅意味着关闭当前运行的活动,还要处理好程序运行过程中的资源释放、内存管理...在实际开发中,应始终遵循最佳实践,以打造高质量的Android应用。

    退出android应用程序Demo

    本示例"退出Android应用程序Demo"将讲解如何实现这个功能,涉及到的关键知识点包括Activity的生命周期管理和Service的控制。 首先,我们需要理解Android的Activity生命周期。Activity是Android应用的基本组件,它...

Global site tag (gtag.js) - Google Analytics