android 安全退出应用程序的几种方法

android 安全退出应用程序的几种方法

正常关闭应用程序:

当应用不再使用时,通常需要关闭应用,可以使用以下三种方法关闭android应用:

第一种方法:首先获取当前进程的id,然后杀死该进程。
android.os.Process.killProcess(android.os.Process.myPid())
通过这种方式不能将应用程序完全杀死,并且他不会把当前应用应用的Activity的task任务栈清空

第二种方法:终止当前正在运行的Java虚拟机,导致程序终止
System.exit(0);
不会把自己的应用程序杀死

第三种方法:强制关闭与该包有关联的一切执行
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);    
manager.restartPackage(getPackageName());
<uses-permission android:name="android.permission.RESTART_PACKAGES" />

只能杀死别人,不能杀死自己

企业中做法:
创建类app 继承Application

AndroidMainfest -->name -->app //声明该类为整个应用程序全局的实例

添加android:name=".全局实例App"

创建整个应用程序全局的实例
App.class:
ArrayList<Activity> activities;

其他的Activity中:
public void onCreate(Bundle savedInstanceState) {
        App app = (App) getApplication();//获取应用程序全局的实例引用
        app.activities.add(this);    //把当前Activity放入集合中
}

public void onDestory(){
        App app = (App) getApplication();//获取应用程序全局的实例引用
        app.activities.remove(this); //把当前Activity从集合中移除
}

安全退出:
在菜单退出按钮的事件中定义如下代码:
App app = (App) getApplication();
List<Activity> activities = app.activities;
for(Activity act:activities){
  act.finish();//显式结束
}

时间: 2024-10-25 16:06:42

android 安全退出应用程序的几种方法的相关文章

一、 Android完全退出应用程序

在Android中,如果想退出Android程序,一般都是调用finish().System.exit(0).android.os.Process.killProcess(android.os.Process.myPid())等方法来实现退出程序功能,可是在实际开发中,并不能达到完全退出应用程序的效果,这是因为调用finish().System.exit(0).android.os.Process.killProcess(android.os.Process.myPid())只能杀死当前的act

c#中退出WinForm程序包括有很多方法,如:this.Close(); Application.Exit();Application.ExitThread(); System.Environment.Exit(0);

本文实例总结了C#中WinForm程序退出方法技巧.分享给大家供大家参考.具体分析如下: 在c#中退出WinForm程序包括有很多方法,如:this.Close(); Application.Exit();Application.ExitThread(); System.Environment.Exit(0); 等他们各自的方法不一样,下面我们就来详细介绍一下. 1.this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退

Android 读取工程内资源文件的两种方法

前言 欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net 雨季o莫忧离:http://blog.csdn.net/luckkof 正文 总结: asset目录下文件: 称为原生文件,这类文件在被打包成apk文件时是不会进行压缩的,不会自动生成R文件的ID 访问: 获取路径: file://android_asset/test.xml //工程根目录下的assets文件夹中存放,比如assets/test

QTP启动应用程序的几种方法

1.用SystemUtil.Run 1 SystemUtil.Run "C:\Program Files (x86)\HP\QuickTest Professional\samples\flight\app\flight3a.exe" 2.用InvokeApplication 1 InvokeApplication "C:\Program Files (x86)\HP\QuickTest Professional\samples\flight\app\flight3a.exe

Android:实现无标题的两种方法

实现无标题的两种方法:配置xml文件和编写代码设置 1.在AndroidManifest.xml文件中进行配置 实现全屏效果: android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 实现无标题栏(但有系统自带的任务栏): android:theme="@android:style/Theme.NoTitleBar" 2.编写代码设置 requestWindowFeature(Window.FEATURE

Android中设置文本颜色的三种方法及颜色大全

原文:Android中设置文本颜色的三种方法及颜色大全 源代码下载地址:http://www.zuidaima.com/share/1550463694572544.htm 1.利于系统自带的颜色类 如TextView1.setTextColor(Android.graphics.Color.RED); 2.数字颜色表示法 TextView1.setTextColor(0xffff00ff); 3.自定义颜色 TextView1.setTextColor(this.getResources().

Android获取APK包名的几种方法

Android获取APK包名的几种方法:1.adb shell pm list package -f | findstr 关键字 #只能获取到包名,主Activity名无法获取到 2.使用aapt--aapt是sdk自带的一个工具,在sdk\builds-tools\目录下 运行后的结果中以下两行分别是应用包名package和入口activity名称 package: name=’com.estrongs.android.pop’ launchable-activity: name=’com.e

在linux环境下编译运行OpenCV程序的两种方法

原来以为在Ubuntu下安装好了OpenCV之后,自己写个简单的程序应该很容易吧,但是呢,就是为了编译一个简单的显示图片的程序我都快被弄崩溃了. 在谷歌和上StackOverFlow查看相关问题解答之后,我下面就介绍Command Line和CMake两种方式. 首先我先粘上我测试的代码吧,文件名为Test.c 1 #include <highgui.h> 2 3 int main(int argc,char ** argv) { 4 5 IplImage* img = cvLoadImage

android获取view宽高的几种方法

在onCreate方法中我们通过mView.getWidth()和mView.getHeight()获取到的view的宽高都是0,那么下面几种方法就可以在onCreate方法中获取到view的宽高. 1. int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED