【Android】安全退出应用程序
2016-05-22 20:08
489 查看
Android安全退出应用程序
杀死进程。这种方法是没有效果的,只能杀死当前的
Activity无法关闭程序,在1.5的时候有用,谷歌设计的时候规定程序不能自杀
android.os.Process.killProcess(android.os.Process.myPid()).
终止当前正在运行的Java虚拟机,导致程序终止.
这种方法也是没有效果的,因为
Android用的是
dalvik虚拟机
System.exit(0);
强制关闭与该包有关联的一切执行
这种方法只能杀死别人,无法杀死自己
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); manager.restartPackage(getPackageName()); 同时需要申请权限 <uses-permission android:name="android.permission.RESTART_PACKAGES" />
既然上面介绍的三种方法都没有效果,那么怎么才能退出应用程序呢?
就是自定义一个
Application,在该
Application中去定义一个
List<Activity>的集合来记录中每一个开启的
Activity,在退出的时候去遍历这个
List<Activity>集合,然后挨个的进行
mActivity.finish()方法,这要求在每开启一个
Activity的时候都加入到
List集合中,并且在
Activity退出的时候从
List集合中将其移除。
public class Activity01 extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MyApp myApp = (MyApp) getApplication(); myApp.activies.add(this); } @Override protected void onDestroy() { super.onDestroy(); MyApp myApp = (MyApp) getApplication(); myApp.activies.remove(this); } public void click1(View view){ Intent intent = new Intent(this,Activity01.class); startActivity(intent); } public void click2(View view){ Intent intent = new Intent(this,Activity02.class); startActivity(intent); } public void exit(View view){ MyApp myApp = (MyApp) getApplication(); for(Activity ac : myApp.activies){ ac.finish(); } } } public class Activity02 extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main2); MyApp myApp = (MyApp) getApplication(); myApp.activies.add(this); } public void click1(View view) { Intent intent = new Intent(this, Activity01.class); startActivity(intent); } public void click2(View view) { Intent intent = new Intent(this, Activity02.class); startActivity(intent); } public void exit(View view) { MyApp myApp = (MyApp) getApplication(); for (Activity ac : myApp.activies) { ac.finish(); } } @Override protected void onDestroy() { super.onDestroy(); MyApp myApp = (MyApp) getApplication(); myApp.activies.remove(this); } } public class MyApp extends Application { //存放当前应用程序里面打开的所有的activity public List<Activity> activies; @Override public void onCreate() { activies = new ArrayList<Activity>(); super.onCreate(); } }
欢迎androider扫描以下二维码关注微信公众号:爱安卓 ,或者搜索微信 : loveandroid321关注
相关文章推荐
- Android中的线程机制(Handler Looper)(二)
- Android Activity生命周期详讲
- Android中 Matrix类
- Notification的几种用法(API不同)
- 关于Activity与Fragment混用中对于startActivityForResult方法的解析
- android中的线程机制
- 【Android 应用开发】GitHub 优秀的 Android 开源项目
- Android开发之Fragment的生命周期
- 安卓屏幕最大化
- android_socket_switch
- Java Android Bug:duplicate entry:classes.dex
- Android Studio系列教程与技巧--下载安装
- Android 笔记
- android:descendantFocusability用法简析
- Notification通过Intent传递参数getIntent()为null的问题解决
- Android实战第一篇——时钟+闹钟+计时器+秒表
- 页面未随软键盘上升及android隐藏软键盘总结
- Android Studio 快捷键大全
- Android Html解析
- MAC 下Android Stdio的NDK环境搭建以及开发初步