Android企业级程序完全退出的解决方案.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:1 大小:270KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

Android企业级程序完全退出的解决方案.pdf

Android企业级程序完全退出的解决方案.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Android企业级程序完全退出的解决方案一、问题描述nnnnnnn在平常开发的过程中可以发现,很多开发者对于程序的退出都没有去认真的解决。一般要么是一个简单的finish(只是退出当前的activity),要么是其他的方法,比如:nnnnnn1、第一种方法:首先获取当前进程的id,然后杀死该进程:nandroid.os.Process.killProcess(android.os.Process.myPid());nnnnnn2、第二种方法:终止当前正在运行的Java虚拟机,导致程序终止:System.exit(0);nnnnnn3、第三种方法:强制关闭与该包有关联的一切执行:ActivityManagermanager=(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnmanager.restartPackage(getPackageName());nnnnnnnnnnnn使用这个方法需要加入权限:<uses-permissionandroid:name="android.permission.RESTART_PACKAGES"/>nnnnnnn但是,这几种方法都是有缺陷的,都不能完全退出程序,比如方法一,它不会把当前应用程序的activity的task栈清空。对于第三种方法,它只能杀死其他的应用程序而不能杀死自己的。二、解决方案nnnnnnn1、实现思路:既然不能一次性全部关闭所有的Activity,一般企业的解决方法就是记录所有打开的Activity,利用单例模式管理Activity,然后在退出程序的时候把所有打开的Activity关闭掉。nnnnnnn2、代码:nnnnnnnnnnnnn⑴新建一个类App继承Application,它的作用是创建整个应用程序的全局实例,而且需要在AndroidManifest.xml清单里面添加一下。nnnnnnnnnnnnnnnnnnnnnnnnnnnnApp类:[html]packagecom.example.testexit;nimportjava.util.ArrayList;nimportjava.util.List;nimportandroid.app.Activity;nimportandroid.app.Application;npublicclassAppextendsApplication{nnnnArrayList<Activity>activities;nnnnprivatestaticAppinstance;nnnn/*nnnnn*在整个应用程序创建时执行nnnn*/nnnn@OverridennnnpublicvoidonCreate(){nnnnnnnnactivities=newArrayList<Activity>();nnnnnnnngetInstance();nnnnnnnnsuper.onCreate();nnnn}nnnnpublicstaticAppgetInstance(){nnnnnnnnif(null==instance){nnnnnnnnnnnninstance=newApp();nnnnnnnn}nnnnnnnnreturninstance;nnnn}nnnnpublicvoidexitApplication(){nnnnnnnnList<Activity>lists=instance.activities;nnnnnnnnfor(Activitya:lists){nnnnnnnnnnnna.finish();nnnnnnnn}nnnn}n}npackagecom.example.testexit;importjava.util.ArrayList;importjava.util.List;importandroid.app.Activity;importandroid.app.Application;publicclassAppextendsApplication{nArrayList<Activity>activities;nprivatestaticAppinstance;n/*n*在整个应用程序创建时执行n*/n@OverridenpublicvoidonCrea