安卓Activity的LaunchMode

本文详细介绍了Android中Activity的四种启动模式:Standard、SingleTop、SingleTask和SingleInstance,并通过具体代码示例展示了这些模式的实际应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Activity的启动模式

<1>Standard(默认-标准模式)

     自己可以启动自己

<2>SingleTop(顶单例模式)

      在栈顶只允许有一个相同的Activity

     自己不能启动自己

 <3>SingleTask(内单例模式)

     如果要启动的Activity存在,则干掉要启动的Activity上面的所有的Activity

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


案例演示如下:

XML代码:

主界面main_activityxml代码:

<?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.example.cookie.android0617closeapplication.MainActivity">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tv_main_text"
        android:text="这是主界面" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="jumpSelf"
        android:text="跳自己"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
<?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.example.cookie.android0617closeapplication.BActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="这是B界面累"
        android:textSize="35sp"
        android:background="#6600"
        />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tb_b_word"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="jumpMain"
        android:text="跳到主页面"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="exit"
        android:text="退出应用程序"/>

</LinearLayout>

android:layout_margin="10dp" android:onClick="jumpOther" android:text="跳别人"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="退出应用程序" android:onClick="exit"/></LinearLayout>




activity_b.xml代码

<?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.example.cookie.android0617closeapplication.BActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="这是B界面累"
        android:textSize="35sp"
        android:background="#6600"
        />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tb_b_word"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="jumpMain"
        android:text="跳到主页面"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="exit"
        android:text="退出应用程序"/>

</LinearLayout>



主界面的MainActivity.java代码:

public class MainActivity extends Activity {

    private TextView tv_main_text;
    private MyApplication myApplication;
    private long firstTime=0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv_main_text = (TextView) findViewById(R.id.tv_main_text);
        tv_main_text.setText("当前Activity实例:"+this+"\n当前任务栈"+this.getTaskId());
        //1.获取Myapplication
        myApplication = (MyApplication) getApplication();
        myApplication.add(this);



    }

    public void jumpSelf(View view){
        Intent intent=new Intent(this,MainActivity.class);
        startActivity(intent);
    }

    public void jumpOther(View view){
        Intent intent=new Intent(this,BActivity.class);
        //startActivity(intent);
        startActivityForResult(intent,0x22);
    }

    public void exit(View view){
        finish();//退出当前的Activity
        //finish()和System.exit(0)都是退出当前的Activity,
        //但是finish()会调用onDestroy()方法,
       // System.exit(0);
        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("test","onDestroy");
    }



  
}




BActivity.java代码:

public class BActivity extends AppCompatActivity {

    private TextView tb_b_word;
    private MyApplication myApplication;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_b);
        tb_b_word = (TextView) findViewById(R.id.tb_b_word);
        tb_b_word.setText("当前Activity地址:"+this+"\nTaskId:"+this.getTaskId());
        //1.获取Myapplication
        myApplication = (MyApplication) getApplication();
        myApplication.add(this);
    }

    public void jumpMain(View view){
        Intent intent=new Intent(this,MainActivity.class);
        startActivity(intent);

    }

    public void exit(View view){
      // finish();
       // System.exit(0);
        myApplication.exit();
    }

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


}








资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值