Android中实现一键退出应用程序

编写不易,如有转载,请声明出处:http://blog.csdn.net/zxc514257857/article/details/62104900

思路

  将所有的activity添加到list集合中,通过点击事件对list集合中的activity进行遍历退出,最后应用退出。

Demo图片展示

这里写图片描述

实现

  • 创建一个ExitApplication类 对所有Activity的退出进行管理
public class ExitApplication extends Application{
    private List<Activity> activityList = new ArrayList<>();
    private static ExitApplication instance;

    public ExitApplication(){}
    public static ExitApplication getInstance(){
        if(null == instance){
            instance = new ExitApplication();
        }
        return instance;
    }
    
    //添加Activity到容器中
    public void addActivity(Activity activity){
        //Log.i("activity", "size:" + activityList.size());
        //Log.i("activity", "name:" + activity.getIntent());
        activityList.add(activity);
    }

    //遍历所有Activity并finish
    public void exit(){
        for(Activity activity : activityList){
	        //依次关闭
            activity.finish();
            //Log.i("activity", "del_size:" + activityList.size());
            //Log.i("activity", "del_name:" + activity.getIntent());
        }
        //强制退出
        System.exit(0);
    }
}
  • 在MainActivity,SecondActivity等Activity中将Activity添加进集合中(可以将exitActivity()方法抽取到BaseActivity中,在Demo中我抽取到BaseActivity中了)
public class MainActivity extends AppCompatActivity {
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        initData();
        exitActivity();
    }
    private void initView() {
        //此处均为findViewById操作,跟主题无关,代码省略
    }

    private void initData() {
        //跟主题无关,代码省略
    }
	
	//退出此Acitvity
	private void exitActivity() {
		ExitApplication.getInstance().addActivity(MainActivity.this);
    }
}

  在SecondActivity中和此MainActivity中的代码相同。

  • 在有退出按钮的ThirdActivity中,实现点击按钮应用退出操作
public class ThirdActivity extends AppCompatActivity {
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_third);
        initView();
        initData();
        exitActivity();
    }
    private void initView() {
        //此处均为findViewById操作,跟主题无关,代码省略
    }

    private void initData() {
        //跟主题无关,代码省略
    }
	
	//退出此Acitvity
	private void exitActivity() {
		ExitApplication.getInstance().addActivity(ThirdActivity.this);
    }

	//点击按钮退出应用程序 在此按钮属性中设置了onClick = logout
    public void logout(View view){
        ExitApplication.getInstance().exit();
    }
}

Demo下载应移步:http://download.csdn.net/detail/zxc514257857/9830675


----------因本人才疏学浅,如博客或Demo中有错误的地方请大家随意指出,与大家一起讨论,共同进步,谢谢!----------

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DreamBackTo

感谢各位金主大大(* _ *)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值