android完全退出应用解决方案

来源:互联网 发布:mac一键关闭所有程序 编辑:程序博客网 时间:2024/04/29 04:36

android完全退出应用解决方案

在实际项目开发中,不知道大家会不会遇到不能完全退出应用的问题。网上也有很多答案,实际测试后没有发现比较好用的方法。再此做下记录,自己利用activity启动方式来实现完美退出应用的方法。

在这之前先简单介绍一下activity的启动模式。
Activity启动方式有四种,分别是:
standard
singleTop
singleTask
singleInstance
下面是这四种模式的作用:

standard
默认模式,可以不用写配置。在这个模式下,都会默认创建一个新的实例。因此,在这种模式下,可以有多个相同的实例,也允许多个相同Activity叠加。

singleTop
可以有多个实例,但是不允许多个相同Activity叠加。即,如果Activity在栈顶的时候,启动相同的Activity,不会创建新的实例,而会调用其onNewIntent方法。

singleTask
只有一个实例。在同一个应用程序中启动他的时候,若Activity不存在,则会在当前task创建一个新的实例,若存在,则会把task中在其之上的其它Activity destory掉并调用它的onNewIntent方法。
如果是在别的应用程序中启动它,则会新建一个task,并在该task中启动这个Activity,singleTask允许别的Activity与其在一个task中共存,也就是说,如果我在这个singleTask的实例中再打开新的Activity,这个新的Activity还是会在singleTask的实例的task中。

在这里我们要用到的是singleTask模式

这里写图片描述
当点击确定时,我们用singleTask启动模式跳转到一个新的透明activity

 /**跳转到一个透明的activity,同时销毁堆栈中所有的activity,                 * 在LoginOutActivity中直接finish当前activity,达到完美退出应用效果*/                Intent intent = new Intent(SettingActivity.this, LoginOutActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);                startActivity(intent);

新的activoty中直接finish掉自己就行了。
LoginOutActivity.xml

package com.hanzgrp.apps.anmagic.ui.activity.member.settings;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class LoginOutActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        finish();    }}
0 0
原创粉丝点击