Activity的LaunchMode和退出应用程序

全面掌握Android LaunchMode:测试实例详解 本文还有配套的精品资源,点击获取 简介:Android中的 LaunchMode 定义了Activity的启动方式和在任务栈中的行为。本测试实例深入解析四种 LaunchMode :标准模式、单实例模式、单任务模式和单栈顶模式。开发者通过在AndroidManifest.xml中设置launchMode属性来实现这些启动模式,并通过多次启动Act... 阅读详情
1.Activity的启动模式
    <1>Standard(默认-标准模式)
        自己可以启动自己(会创新一个新的Activity)
    <2>SingleTop(顶单例模式)
        在栈顶只允许有一个相同的Activity
        自己不能启动自己
    <3>SingleTask(内单例模式)
        如果要启动的Activity存在,则干掉要启动的Activity上面的所有的Activity

    <4>SingleInstance(全局单例模式)

2.退出应用程序
    <1>递归退出
    <2>栈退出
        Application:多个组件之间数据共享(全局)


因为页面太多就不放效果图了大笑大笑大笑

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent" tools:context="com.zking.administrator.app6.MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#66ffff00"
        android:text="这是MainActivity"
        android:textSize="30sp"/>
   <TextView
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:id="@+id/tv_main_text"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="跳自己"
        android:onClick="jumpMain"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="跳B"
        android:onClick="jumpB"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="退出应用程序"
        android:onClick="exit"/>
</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.zking.administrator.app6.BActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#66ff00ff"
        android:text="这是BActivity"
        android:textSize="30sp"/>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tv_b_text"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="跳MMain"
        android:onClick="jumpMain"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="退出应用程序"
        android:onClick="exit"/>
</LinearLayout>

package com.zking.administrator.app6;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

import com.zking.application.MyApplication;

public class MainActivity extends AppCompatActivity {

    private TextView tv_main_text;
    private MyApplication myApplication;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv_main_text = (TextView) findViewById(R.id.tv_main_text);
        //this打印当前地址   this.getTaskId()拿当前Activity所占任务的ID
        //如果你第一个或第二个ID不一样的话就代表有俩个栈,一样的话就代表一个栈
        tv_main_text.setText("当前Activity实例(在内存里的地址):"+this+"\n当前任务栈"+this.getTaskId());
        //获取MyApplication
        myApplication = (MyApplication) getApplication();
        myApplication.add(this);
    }

    public void jumpMain(View view){
        //自己跳自己
        Intent intent=new Intent(this,MainActivity.class);
        //启动(栈用普通的方式启动)
        startActivity(intent);
        //递归的退出方式用startActivityForResult启动
        //startActivityForResult(intent,0x101);
    }
    public void jumpB(View view){
        //跳B页面
        Intent intent=new Intent(this,BActivity.class);
        startActivity(intent);

    }
    //递归的退出方式
    public void exit(View view){
        //finish();//退出当前的Activity
        //finish会调用onDestroy
        //System.exit(0);//退出当前Activity
        //system不会用onDestroy
        //用myApplication退出
        myApplication.exit();
    }
//    @Override
//    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//        super.onActivityResult(requestCode, resultCode, data);
//        exit(null);
//    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i("text","onDestroy");
    }

}

package com.zking.administrator.app6;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import com.zking.application.MyApplication;

public class BActivity extends AppCompatActivity {

    private MyApplication myApplication;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_b);
        TextView tv_b_text= (TextView) findViewById(R.id.tv_b_text);
        tv_b_text.setText("当前Activity地址:"+this+"\nTastId:"+this.getTaskId());
        //获取MyApplication
        myApplication = (MyApplication) getApplication();
        myApplication.add(this);
    }
    public void jumpMain(View view){
        //跳Main页面
        Intent intent=new Intent(this,MainActivity.class);
        startActivity(intent);
    }

    //退出
    public void exit(View view){
        //finish();//退出当前的Activity
        //System.exit(0);//退出当前Activity
        //用myApplication退出
        myApplication.exit();
    }
}
用栈退出要写一个自定义的MyApplication
package com.zking.application;

import android.app.Activity;
import android.app.Application;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2017/6/17.
 */

public class MyApplication extends Application{
    //定义一个对象集合
    private List<Activity> activities=new ArrayList<>();

    //写一个方法给集合加值
    public void add(Activity activity){
        activities.add(activity);
    }

    //写一个退出的方法
    public void exit(){
        //遍历activities
        for (Activity activity : activities) {
            //调用每一个activity的finish
            activity.finish();
        }
    }
}


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.zking.administrator.app6">
    //在这里给application换一个名字,就是我们自定义的MyApplication
    <application
        android:name="com.zking.application.MyApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".BActivity"></activity>
    </application>

</manifest>






复现论文《大规模风电场电磁暂态高效建模仿真方法》 本文提出了一种针对大规模风电场电磁暂态(EMT)仿真的高效建模方法。通过三种关键技术实现仿真加速:(1)永磁直驱风电机组一体化等效建模,采用节点导纳矩阵降维将25节点机组简化为4端子电路,仿真速度提升1-3个数量级;(2)基于戴维南/诺顿等效和OpenMP并行计算的风电场整体建模,通过串并联叠加实现节点收缩,30台机组仿真加速近万倍;(3)受控源映射解耦方法提高故障仿真灵活性。复现代码展示了核心算法实现,包括导纳矩阵Schur补降维、多进程并行计算框架以及受控源解耦方法。 阅读详情

相关推荐

GD32F470实战:如何用EXMC+SDRAM为LVGL打造超大内存池(附完整配置代码)

本文详细介绍了如何利用GD32F470的EXMC接口与SDRAM深度整合,为LVGL构建高性能内存解决方案。通过硬件架构设计、EXMC接口配置、高级内存管理策略及LVGL性能优化技巧,开发者可以突破微控制器内存限制,实现高分辨率显示和复杂动画效果。附完整配置代码,助力嵌入式GUI开发。

rrr55的博客 547

Android之LaunchMode(启动模式)

Android之LaunchMode(启动模式) 文章目录Android之LaunchMode(启动模式)Activity的4种启动模式1.1 standard ------ 标准模式1.2 singleTop1.3 singleTask1.4 singleInstance Activity的4种启动模式 注意: Activity的启动模式将会影响到手机系统的任务栈, 所以想深刻的理解启动模式,一定要先了解怎么去看任务栈,其实很简单输入一条命令即可 adb shell dumpsys activity -

Demon_T的博客 1万+

产品失效你必须要知道的概念---MTBF、MTTF和FIT

如果我们想知道该电路在10年后仍能正常工作的几率,按照前面例子的相同计算步骤,结果将是90.3%。例如,假设一个TDK电容器的MTBF为6918年(16.5失效时间间隔,FIT),这并不意味着该电容器能持续这么久(显然,没有人能够对部件进行这么长时间的测试)。综上,MTBF和MTTF是用来描述系统或设备级别的故障间隔时间,而FIT是用来描述某单一器件的失效率的单位。MTBF和MTTF使用相同的计算方法,但MTBF用于可维修的产品,而MTTF用于不可维修或维修成本过高的产品。

weixin_49761275的博客 3834

基础总结篇之二:Activity的四种launchMode

合抱之木,生於毫末;九層之台,起於累土;千里之行,始於足下。《老子》 今天在社区看到有朋友问“如何在半年内成为顶级架构师”,有网友道“关灯睡觉,不用半年的...”,的确,做梦还来的快一些。作为一个程序员,树立远大的目标是值得欣赏的,但不能只去空想,要一步一步地实践才行。成大事者,须从小事做起;万事起于忽微,量变引起质变。 我们今天要讲的是Activity的四种launchMode。 laun...

t225com 1263

用Origin快速拟合荧光寿命、PL Decay (TRPL)数据分析处理

用Origin快速拟合荧光寿命、PL Decay (TRPL)数据分析处理

A20802013的博客 2万+

清华电子系保研面试全记录:五轮硬核考核+工程硕博专项解析(附真题)

本文详细解析了清华大学电子工程系保研面试的完整流程,重点剖析了其标志性的五轮专业面试(涵盖电路、电磁场、信号系统、计算机与AI)和综合组群面,并深入解读了工程硕博改革专项的考核要点与备战策略。文章提供了各专业组的真题示例与应对方法,旨在帮助电子信息相关专业学子系统准备,从容应对这场高强度的知识与综合素质挑战。

u0v1w2x3的博客 587

android launchMode理解以及应用场景

在我们写应用的时候,常常涉及多个activity组件之间的跳转。比如说某个资讯的页面中,点击下一篇资讯跳转相同的页面,只有页面的数据不一样。一般情况下我不会注意launchMode 这个属性,只会使用默认的,这样会产生大量重复的activity。那是因为之前不了解,所以特此研究学习。1.如何指定launchMode基本上我们可以直接指定一个launchMode属性在AndroidManifest.x

android_小路的博客 9129

[QMT量化交易小白入门]-四十四、年化收益48%的策略要兼容回测和实盘,将实盘改为定时任务的方式

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 1371

Android-Activity的LaunchMode和退出应用程序

1.Activity的启动模式   Fragment     Standard(默认-标准模式)         自己可以启动自己(会创新一个新的Activity)     SingleTop(顶单例模式)         在栈顶只允许有一个相同的Activity         自己不能启动自己     SingleTask(内单例模式)         如果要启动的Activit

qq_35852939的博客 229

软考高级信息系统项目管理师系列论文之:百篇软考高级信息系统项目管理师论文范文

软考高级信息系统项目管理师系列论文之:百篇软考高级信息系统项目管理师论文范文

zhengzaifeidelushang的博客 3579

【AI编程】Cursor编程工具使用教程:下载、配置、使用、运行Java项目

【AI编程】Cursor编程工具使用教程:下载、配置、使用、运行Java项目

funfan的博客 5198

android开发全然退出activity

我们退出Activity能够调用:finish(),system(0),可是这些都仅仅是单单退出单个Activity 也有人会说,直接把进程杀死,这些做法都不是非常可取。事实上我们翻看api能够发现。Activity 都是放入stack中管理,我们仅仅要把stack清空了,不就全然退出了嘛。要对Activity的stack 管理,就须要了解launchMode...

weixin_30482383的博客 90

【Claude】API Error 通用错误:错误码含义与标准排查流程 bug报错已解决

Claude API 各类错误码速查与标准排查流程。

博客 8243

采用FLAG_ACTIVITY_CLEAR_TOP退出整个程序(多activity)

问题: 多activity中退出整个程序,例如从A->B->C->D,这时我需要从D直接退出程序。 网上资料:{ finish()和system(0)都只能退出单个activity。杀进程等的等方式都不行~~~ 解决问题: 我们知道Android的窗口类提供了历史栈,我们可以通过stack的原理来巧妙的实现,这里我们在D窗口打开A窗口时在Intent中直接加入标志Intent.FLAG_

HAPP NEW JAVA 653

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Android 快速退出应用程序

Android 快速退出应用程序介绍几种快速退出android应用程序的方法

564

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

关于Activity退出的疑问

当ACT1,ACT2,  2返回A时,A再退出,直接返回到2了。。。。并没有结束程序。 解决。设置manifest 中 最下面的  Launch mode  为single task

路遥知马力 532

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

正在运行的android程序,按home键之后退回到桌面,在次点击程序图标避免再次重新启动程序解决办法

例如:一个android程序包含两个Activity,分别为MainActivity和OtherActivity,MainActivity为程序启动的Activity。如果程序正位于OtherActivity,点击home键,程序退回到桌面, 在次点击程序图标,程序默认会自动重启,即重新进入MainActivity,而不是进入点击home键的时刻程序所位于的OtherActivity。

huningjun的专栏 1008

Android 重启app的一些方法

有的时候需要重新启动app,有两种可行的方案

ifangler的专栏 1万+

Android 退出Activity的方式

参考  http://www.cnblogs.com/meizixiong/archive/2013/07/03/3170591.html 退出单个Activity方法:       1. 调用finish    2. 杀死该进程:killprocess(Process.mId)        3. 终止正在运行的虚拟机:system.exit()

dennycking的博客 868

android返回多个activity,【Android】退出多个Activity方法(一)

当我们在使用APP过程中会不知不觉打开了多个Activity。如果中途我们想退出,没有做一步退出多个Activity的方法的话,就只能一步一步点,点到结束为止,对于这种APP当退出的一刻也就是卸载跟它说拜拜的时刻了。所以开发过程中我们应该去实现随时随地一步退出多个Activity的方法。接下来介绍退出多个Activity的第一个方法:使用setFlags的方式。举个例子,一个APP有四个Activ...

weixin_31265295的博客 603

Activity的launchMode

在manifest.xml文件中,我们可以为Activity指定launchMode,总共有四种,弄清楚这四种的区别在Android开发中还是非常有必要的,下面分别来讨论:      1. standard,这种是默认的模式,Activity可以创建很多的实例,不管这些实例是不是在同一个任务中。91pron free videos可以简单理解只要调用startActivity就会创建一个

a2112511463的专栏 468
上一篇: Activity生命周期和Activity页面之间数据传递
下一篇: 点击返回键:弹出退出的对话框和双击两次返回键,退出
XHui_Lin
博客等级 码龄10年 27粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值