澳门威利斯人_威利斯人娱乐「手机版」

来自 澳门威利斯人 2020-03-12 06:48 的文章
当前位置: 澳门威利斯人 > 澳门威利斯人 > 正文

浅谈Android应用如何退出,Android基础之一键退出

Intent intent = new Intent();

Step2:重写MainActivity的onNewIntent方法

//重写onNewIntent

@Override

protected void onNewIntent(Intent intent){

super.onNewIntent(intent);

if(intent!=null&&intent.getBooleanExtra("isExit",false)){

this.finish();

}}

        // 遍历全部Activity并finish
        /*
         * 在每一个Activity中的onCreate方法里增加该Activity到MyApplication对象实例容器中
         * 
         * MyApplication.getInstance().addActivity(this);
         * 
         * 在须要收尾全数Activity的时候调用exit方法
         * 
         * MyApplication.getInstance().exit();
         */
        public void exit() {

优点:应用途景广泛:兼备单 / 多职责栈 & 多运营方式的情况

总结:

这三种办法只可以用于非多职务栈,即LauchMode无法为 SingleInstance。

当系统版本为5.0时用系统职务栈退出。小于5.0时用前三种方法。这里接纳的第二种办法,不用安装LauchMode(非多职务栈)。

if (Build.VERSION.SDK_INT>=21){

// 1. 通过Context获取ActivityManager

ActivityManager activityManager = (ActivityManager) context.getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);

// 2. 通过ActivityManager获取职务栈

List appTaskList = activityManager.getAppTasks();

// 3. 每一种关闭Activity

for (ActivityManager.AppTask appTask : appTaskList) {

    appTask.finishAndRemoveTask();

}}

else{

Intent intent=new Intent(context, MainActivity.class);

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);   

intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

intent.putExtra("isExit",true);

context.startActivity(intent);

}

将启动Activity的onNewIntent重写

//重写onNewIntent

@Override

protected void onNewIntent(Intentintent){

    super.onNewIntent(intent);

    if(intent!=null&&intent.getBooleanExtra("isExit",false)){

        this.finish();

    }

}

第二回写随笔,忘各位多多包罗,有欠缺的位置也请提出,协同进步。感谢各位大佬!借使以为好的话点个钟爱,让自家也多少重力。再一次多谢我们。哈哈

 

@Override

自个儿小生手三个,都在说写作品会向上,所以平昔想尝试。第二回写,希望我们多多满含!哈哈

                for (Activity activity : activityList) {
                        activity.finish();
                }

我们先看"Activity的脱离",大约有以下三种艺术能够达成Activity的退出.

第两种:设置标志位。

退出时,张开运行Acitivity,踏入onNewIntent中的方法。将运转Activity上层的Activity都退出栈。在将开发银行Activity退出就好了。

        // 单例格局中收获独一的MyApplication实例
        public static MyApplication getInstance() {
                if (null == instance) {
                        instance = new MyApplication();
                }
                return instance;

// 设置标识位

Step2:退出Activity

在想淡出的Activity中

Intent intent = new Intent(this,MainActivity.class);

intent.putExtra("isExit",true);

//设置标识,将MainActivity以至MainActivity上层的Activity销毁。重新张开二个MainActivity(走MainActivity的onCreate方法)

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);   

//如若LauchMode为SingleTask也许SingleTop再也许增加标识位Intent.FLAG_ACTIVITY_SINGLE_TOP。那么MainActivity就不会销毁,而是步向onNewIntent()方法。

intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

startActivity(intent);

        }

缺欠:只好甘休方今activity的职务栈,若有多少个任务栈,则无法退出.

Step1:加载形式为singleTask

在AndroidManifest中将大家步向的首先个Activity(MainActivity)的加载设置为singleTask。那样MainActivity就处在栈底。

public class MyApplication extends Application {

public void onActivityStarted(Activity activity) {

Step3:退出Activity

在想退出的Activity中

Intent intent = new Intent(this,MainActivity.class);

intent.putExtra("isExit",true);

startActivity(intent);

是因为大家的开发银行Activity的LauchMode为SingleTask,所以栈中全体位于MainActivity上层的Activity都会退出,只剩下MainActivity位于栈顶。那时再将MainActivity退出就足以了。


        private MyApplication() {
        }

Log.d(TAG, activity.getLocalClassName;

Step1:与第一种的Step2同样。 重写运行Activity的onNewIntent方法

//重写onNewIntent

@Override

protected void onNewIntent(Intent intent){

super.onNewIntent(intent);

if(intent!=null&&intent.getBooleanExtra("isExit",false)){

this.finish();}}

基于Activity的宣示周期 
方法1
   我们掌握Android的窗口类提供了历史栈,大家能够透过stack的原理来都行的落到实处,这里我们在A窗口展开B窗口时在Intent中央直属机关接参与标记Intent.FLAG_ACTIVITY_CLEAR_TOP,那样开启B时将会去掉该进程空间的富有Activity。 

if (isExitApp) {

第一种:LauchMode设置为SingleTask

方法2: 

可取: 使用简易 & 方便

两种最简便易行最常用的退出APP的措施:

在调用退出方式中写上

app.exitApp();

其二种:系统职责栈退出

// 1. 通过Context获取ActivityManager

ActivityManager activityManager =(ActivityManager)context.getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);

// 2. 经过ActivityManager获取义务栈

List appTaskList = activityManager.getAppTasks();

// 3. 每一个关闭Activity

for (ActivityManager.AppTask appTask : appTaskList) {   

  appTask.finishAndRemoveTask();

}}

        // 增添Activity到容器中
        public void addActivity(Activity activity) {
                activityList.add(activity);
        }

android:name=".Carson_BaseApplicaiton"

在A窗口中使用上边包车型大巴代码调用B窗口 
Java代码 

上述都只是成就了第一步,下边看如何停止进度

Intent intent = new Intent(); 
intent.setClass(Android123.this, CWJ.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP卡塔尔;  //注意本行的FLAG设置 
startActivity(intent) 

2.进度停止

        }

// 此处选取 LinkedList作为容器,增加和删除速度快

MyApplication.getInstance().exit();

super.onCreate();

        private List<Activity> activityList = new LinkedList<Activity>();
        private static MyApplication instance;

Intent intent = new Intent(context, MainActivity.class);

                System.exit(0);

Log.d(TAG, "onActivityCreated: " activity.getLocalClassName;

Log.d(TAG, "容器内的Activity列表如下 "卡塔尔(قطر‎;

public void onActivityDestroyed(Activity activity) {

}

// 先打字与印刷当前容器内的Activity列表

}

// System.exit和System.exit的区别

public class Carson_BaseApplicaiton extends Application {

经过在Application子类中创立多个Activity链表:保存正在运作的Activity实例;当需求一键退出App时把链表内部存款和储蓄器有Activity实例各种退出就可以(其实自身个人以为利用list集结也能够卡塔尔国

优点:

缺欠: 须要在各样 Activity 里登记广播选择器

2.3 在急需退出时调用 exitApp(卡塔尔

// 截至进度

for (Activity activity : activityLinkedList) {

由此 ActivityManager 获取当前系统的任务栈 & 把栈内全部Activity各个退出.

if (intent != null) {

this.finish();

intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

context.startActivity;

super.onNewIntent;

// 步骤1:该标志位成效:销毁指标Activity和它之上的享有Activity,重新创立目的Activity

// 4. 终结进度

@Override

intent.putExtra("exit", true);

@Override

for (ActivityManager.AppTask appTask : appTaskList) {

// 在步骤1中:MainActivity的上层的Activity2会被销毁,那个时候MainActivity坐落于栈顶;由于步骤2的安装,所以不会新建MainActivity而是重用栈顶的实例&调用实onNewIntent(卡塔尔国

ActivityManager activityManager = (ActivityManager) context.getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);

Intent.FLAG_ACTIVITY_CLEAR_TOP:销毁目的Activity和它之上的富有Activity,重新创造指标Activity

// System.exit;

应用范围局限:只好截止当前职务栈的Activity,若现身多职责栈(即选取SingleInstance运维形式)则无从管理

}

本文由澳门威利斯人发布于澳门威利斯人,转载请注明出处:浅谈Android应用如何退出,Android基础之一键退出

关键词: 澳门威利斯人 基础 Android知识 Android 一键