Android : 启动模式_简单应用

在 AndroidManifest.xml 文件中更改 android:launchMode=" "

standard、singleTask、singleTop、singleInstance、singleInstancePerTask 

standard 启动模式: 默认模式

android:launchMode="standard"

a—>b  ab;

跳转几个界面就要 点击 返回几次 才可退出.   

<activity
            android:launchMode="standard"
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

singleTop启动模式:

android:launchMode="singleTop"

顶部存在相同界面将不会跳转,跳转界面时 如果存在有相同的 就不会跳转,返回退出时跳转了几次,返回几次就好。

a -> b    =   ab   ;   ab -> b= ab   ;    ab -> a =   aba;  aba->a = aba;aba ->b= abab

a界面跳b页面,   b页面在上方  在跳转到b ,b页面在顶部不会跳转, 如跳转a页面会成功,

同理aba ,跳转到a界面 ,a界面已经存在 ,不会跳转;

退出:栈同理 后进先出  b—>  a  —> b —>a  退程序  返回4次退出程序

singleTask 启动模式

android:launchMode="singleTask"

只针对栈底

a—>b—>c   = abc   ; a 界面 跳到 b界面  跳到 c 界面

abc —>a   =  a   ;     abc界面跳到a界面,  a 界面在最下面  发现又跳转a界面  ,  此时就变成 只剩 a界面了 ,点击一次返回就退出程序了

singleInstance启动模式

android:launchMode="singlestance"

单例,没有相同的界面, 不管页面怎么跳转,始终只有一个单独的界面,没有重复的

a—>b —>c   =abc;  3个界面,

abc ->a  = cba;  跳转 a 界面时  发现 a 已经存在,直接到a 不会出现重复的

abc ->b  = acb;  跳转 b 界面时  发现 b 已经存在,直接到b 不会出现重复的

退出: 有几个就退出几次  acb    b ->c ->a   3次 退出

singleInstancePerTask启动模式

android:launchMode="singleInstancePerTask"

没明白 演示可以一直跳,然后跳了几次 返回几次,原路返回,感觉和 standard 默认的一样

代码:A主界面  MainActivity.java

package com.example.mostandard;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    private Button btnA,btnB,btnC;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnA = findViewById(R.id.btn_a_a);
        btnB = findViewById(R.id.btn_a_b);
        btnC = findViewById(R.id.btn_a_c);

        // a 跳转 a
        btnA.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // standard 模式 自己跳转自己
                startActivity(new Intent(MainActivity.this, MainActivity.class));
            }
        });

        //a 跳 b
        btnB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this, BBActivity.class));
            }
        });

        //a 跳 c
        btnC.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this, CCActivity.class));
            }
        });
    }
}

  BBActivity.java

package com.example.mostandard;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class BBActivity extends AppCompatActivity {

    private Button btnA,btnB,btnC;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bbactivity);

        btnA = findViewById(R.id.btn_b_a);
        btnB = findViewById(R.id.btn_b_b);
        btnC = findViewById(R.id.btn_b_c);

        //b 跳 a
        btnA.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(BBActivity.this, MainActivity.class));
            }
        });
        // b 跳 b
        btnB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(BBActivity.this, BBActivity.class));
            }
        });

        //b 跳 C
        btnC.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(BBActivity.this, CCActivity.class));
            }
        });
    }
}

CCActivity.java 

package com.example.mostandard;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class CCActivity extends AppCompatActivity implements View.OnClickListener{

    private Button btnA,btnB,btnC;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ccactivity);

        btnA = findViewById(R.id.btn_c_a);
        btnB = findViewById(R.id.btn_c_b);
        btnC = findViewById(R.id.btn_c_c);

        //事件
        btnA.setOnClickListener(this);
        btnB.setOnClickListener(this);
        btnC.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {

        if (v.getId() == R.id.btn_c_a) {
            //c 跳 a
            startActivity(new Intent(CCActivity.this, MainActivity.class));
        } else if (v.getId() == R.id.btn_c_b) {
            // c 跳 b
            startActivity(new Intent(CCActivity.this, BBActivity.class));
        } else if (v.getId() == R.id.btn_c_c) {
            //c 跳 c
            startActivity(new Intent(CCActivity.this, CCActivity.class));
        }
    }
}

主界面布局 activity_main.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:orientation="vertical"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="A-Activity视图"
        android:textSize="24sp"
        />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btn_a_a"
        android:text="跳转到视图A"
        android:textSize="24sp"
        />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btn_a_b"
        android:text="跳转到视图b"
        android:textSize="24sp"
        />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btn_a_c"
        android:text="跳转到视图c"
        android:textSize="24sp"
        />

</LinearLayout>

B界面 activity_bbactivity.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:orientation="vertical"
    android:layout_height="match_parent"
    tools:context=".BBActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="B-Activity视图"
        android:textSize="24sp"
        />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btn_b_a"
        android:text="跳转到视图A"
        android:textSize="24sp"
        />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btn_b_b"
        android:text="跳转到视图b"
        android:textSize="24sp"
        />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btn_b_c"
        android:text="跳转到视图c"
        android:textSize="24sp"
        />

</LinearLayout>

C界面 activity_ccactivity.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:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".CCActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="C-Activity视图"
        android:textSize="24sp"
        />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btn_c_a"
        android:text="跳转到视图A"
        android:textSize="24sp"
        />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btn_c_b"
        android:text="跳转到视图b"
        android:textSize="24sp"
        />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btn_c_c"
        android:text="跳转到视图c"
        android:textSize="24sp"
        />


</LinearLayout>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

javaGHui

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值