关于android退出系统的代码网上很多

但大部分是不行的,比如

System.exit(0);//只能退出当前activity

还有

ActivityManager activityMgr= (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);activityMgr.restartPackage(getPackageName());

等都能对当前activity,可有时我们的activity 实例不只一个


这里有一个很好的办法就是使用广播BroadcastReceiver(广播的介绍自己去google下),这里直接贴出代码,代码可以在一个基础Activity然后其他Activity继承改基类, 也可以写到每个activity里,以下代码是直接写到activity里

MainActivity.java

public class MainActivity extends  Activity{       public final static String BORADCAST_ACTION_EXIT = "com.wangzhj.exit";//关闭活动的广播action名称       ........      @Overrideprotected void onCreate(Bundle savedInstanceState) {........           // 在当前的activity中注册广播              IntentFilter filter = new IntentFilter();            filter.addAction(BORADCAST_ACTION_EXIT);//为BroadcastReceiver指定一个action,即要监听的消息名字            registerReceiver(mBoradcastReceiver,filter); //动态注册监听  静态的话 在AndroidManifest.xml中定义}private BroadcastReceiver mBoradcastReceiver = new BroadcastReceiver(){@Overridepublic void onReceive(Context context, Intent intent) {if(intent.getAction().equals(BORADCAST_ACTION_EXIT)){//发来关闭action的广播finish();}}};@Overrideprotected void onDestroy() { // TODO Auto-generated method stubsuper.onDestroy();unregisterReceiver(mBoradcastReceiver); //取消监听}//返回按钮 退出系统@Overridepublic void onBackPressed() {  new AlertDialog.Builder(this).setTitle("提示").setMessage("请确认退出系统?").setPositiveButton("退出", new DialogInterface.OnClickListener() {         @Override         public void onClick(DialogInterface dialog, int which) {         Intent intent = new Intent();        intent.setAction(BORADCAST_ACTION_EXIT);        sendBroadcast(intent);//发送退出系统广播  每个接收器都会收到 调动finish()关闭activity        finish();        }}).setNegativeButton("按错了...", null).show();    }.......}

另外一个activity.java

public class OtherActivity extends Activity {         .......@Overrideprotected void onCreate(Bundle savedInstanceState) {              // 在当前的activity中注册广播                IntentFilter filter = new IntentFilter();              filter.addAction(MainActivity.BORADCAST_ACTION_EXIT);//为BroadcastReceiver指定一个action,即要监听的消息名字              registerReceiver(mBoradcastReceiver,filter); //动态注册监听  静态的话 在AndroidManifest.xml中定义}private BroadcastReceiver mBoradcastReceiver = new BroadcastReceiver(){@Overridepublic void onReceive(Context context, Intent intent) {if(intent.getAction().equals(MainActivity.BORADCAST_ACTION_EXIT)){//发来关闭action的广播finish();}}};@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();unregisterReceiver(mBoradcastReceiver); //取消监听}........}

如果有多个activity都加上以上代码就可以实现程序完全退出功能。



更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. Nginx系列教程(四)| 一文带你读懂Nginx的动静分离
  3. Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影
  4. Pixel修改kernel内核调试
  5. android关于获取摄像头帧数据转成图片
  6. Android7.1修改系统默认多媒体音量大小
  7. Android(安卓)AsyncTaskLoader需要注意的问题
  8. Android数据存储(3)SQLite简介和简单的登录与注册源代码
  9. android 第一行代码(第二版)Litepal遇到的问题

随机推荐

  1. 9种 MySQL数据库优化的技巧
  2. 浅谈MySQL安装starting the server失败的
  3. MySQL表的碎片整理和空间回收的方法
  4. mysql中锁机制的最全面讲解
  5. Mysql空间清理的几种具体方法
  6. MySQL学习之数据库操作DML详解小白篇
  7. SQL实现时间序列错位还原案列
  8. MySQL学习之数据库表五大约束详解小白篇
  9. Mysql学习之创建和操作数据库及表DDL大全
  10. Mysql学习之数据库检索语句DQL大全小白篇