欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android中实现完全退出程序方法(退出所有activity)

程序员文章站 2022-04-30 22:50:26
这是一个很多很多人都 会遇到的问题,我也试过了很多方法,都不怎么好用。 比如: 复制代码 代码如下: system.exit(0); 不行。 还有什么跳转到第...

这是一个很多很多人都 会遇到的问题,我也试过了很多方法,都不怎么好用。
比如:

复制代码 代码如下:

system.exit(0);

不行。
还有什么跳转到第一个activity,同时把栈顶的activity全部清除,最后再finish();还是不行。。不知道为什么。
这里是我自己的一个方法,效果非常好。
原理:在每个activity都注册一个广播接收器,用来接收关闭activity的广播。当需要退出程序的时候就发送一条关闭activity的广播,这样所有的activity都会接收到,然后所有activity都会自己finish了。

复制代码 代码如下:

package com.example.exitsystem;

import android.app.activity;
import android.content.broadcastreceiver;
import android.content.context;
import android.content.intent;
import android.content.intentfilter;
import android.os.bundle;

/**
 * 所有activity都继承此类,同时也就等于注册了广播,
 * 当需要完全退出系统的时候就可以发送广播,
 * action为com.example.exitsystem.system_exit(自定义),
 * 这样就可以随时退出所有的activity了
 * @author linzhiquan
 *
 */
public class superactivity extends activity {
 /** 广播action */
 public static final string system_exit = "com.example.exitsystem.system_exit";
 /** 接收器 */
 private myreceiver receiver;
 
 @override
 protected void oncreate(bundle savedinstancestate) {
  super.oncreate(savedinstancestate);
  
  //注册广播,用于退出程序
  intentfilter filter = new intentfilter();
  filter.addaction(system_exit);
  receiver = new myreceiver();
  this.registerreceiver(receiver, filter);
 }
 
 @override
 protected void ondestroy() {
  //记得取消广播注册
  this.unregisterreceiver(receiver);
  super.ondestroy();
 }
 
 private class myreceiver extends broadcastreceiver {
  @override
  public void onreceive(context context, intent intent) {
   finish();
  }
 }
}


复制代码 代码如下:

package com.example.exitsystem;

import android.os.bundle;

/**
 * 普通activity, 继承superactivity
 * @author linzhiquan
 *
 */
public class mainactivity extends superactivity {
    @override
    protected void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.activity_main);
    }
}


需要退出程序的时候发送一条广播即可。

复制代码 代码如下:

        intent intent = new intent();
        intent.setaction(superactivity.system_exit);
        sendbroadcast(intent);