Android退出程序
通常一个Android程序会对应多个activity,对于结束一个activity,通常我们会想到使用finish(),finish仅仅是针对activity的,它只是将活动推向后台,并没有立即释放内存,资源并没有被清理。例如A—〉B(由A窗口打开B窗口),如果在B中调用finish(),只是将B窗口关闭了,这时候会显示A窗口。那么如何退出整个程序呢?
一、Dalvik VM的本地方法
1. android.os.Process.killProcess(android.os.Process.myPid()) //获取PID , 杀死进程
2. System.exit(0); //常规java、c#的标准退出法,返回值为0代表正常退出
public void exitProgrames() { Intent startMain = new Intent(Intent.ACTION_MAIN); startMain.addCategory(Intent.CATEGORY_HOME); startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(startMain); android.os.Process.killProcess(android.os.Process.myPid()); //或者 System.exit(0); }
二、任务管理器方法
前提:Android 1.5 API Level为3以上
需要权限:<uses-permission android:name=\"android.permission.RESTART_PACKAGES\"></uses- permission>
代码:
ActivityManager actManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
actManager.restartPackage(getPackageName());
三、自定义实现管理Activity
//单例模式管理activity public class ActivityManger { List<Activity> activityList = new LinkedList<Activity>(); private static ActivityManger instance; public ActivityManger getInstance(){ if(instance == null){ instance = new ActivityManger(); } return instance; } //添加activity public void addActivity(Activity activity){ activityList.add(activity); } //遍历关闭每一个activity public void exit(){ for(Activity activity: activityList){ activity.finish(); } } }
四、通过 Intent.FLAG_ACTIVITY_CLEAR_TOP
A打开B 时,在Intent中加入标志 Intent.FLAG_ACTIVITY_CLEAR_TOP
ntent intent = new Intent(); intent.setClass(A.this, B.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //设置FLAG startActivity(intent);
B启动时,将会清除该进程空间的所有Activity。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。