Jump to content
  • Hello visitors, welcome to the Hacker World Forum!

    Red Team 1949  (formerly CHT Attack and Defense Team) In this rapidly changing Internet era, we maintain our original intention and create the best community to jointly exchange network technologies. You can obtain hacker attack and defense skills and knowledge in the forum, or you can join our Telegram communication group to discuss and communicate in real time. All kinds of advertisements are prohibited in the forum. Please register as a registered user to check our usage and privacy policy. Thank you for your cooperation.

    TheHackerWorld Official

活动Activity——Activity的启动模式——重点

 Share


Recommended Posts

1895087-20220703154627420-289368803.png

 

 

1895087-20220703154643709-696626116.png

 

 

 

 

 

 

 

 

 

1895087-20220703154733476-1966071356.png

 

 

 

 

打开AndroidManifest.xml,给activity节点添加属性android:launchMode,activity节点配置内容示例如下:

                 

                                        <activity android:name=".JumpFirstActivity" android:launchMode="standard" />

 

launchMode属性的取值说明见下表。

 

 

1895087-20220703154821135-559958838.png

 

 

 

 

 

 

 

 

 

1895087-20220703154841553-358855143.png

 

 

 

 

调用Intent对象的setFlags方法设置启动标志,示例如下:

 


// 创建一个意图对象,准备跳到指定的活动页面

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

 


// 设置启动标志。Intent.FLAG_ACTIVITY_NEW_TASK表示创建新的任务栈

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);


startActivity(intent); // 跳转到意图对象指定的活动页面

 

 

 

 

启动标志的取值说明如下:


Intent.FLAG_ACTIVITY_NEW_TASK:开辟一个新的任务栈


Intent.FLAG_ACTIVITY_SINGLE_TOP:当栈顶为待跳转的活动实例之时,则重用栈顶的实例


Intent.FLAG_ACTIVITY_CLEAR_TOP:当栈中存在待跳转的活动实例时,则重新创建一个新实例,并清除原实例上方的所有实例


Intent.FLAG_ACTIVITY_NO_HISTORY:栈中不保存新启动的活动实例


Intent.FLAG_ACTIVITY_CLEAR_TASK:跳转到新页面时,栈中的原有实例都被清空

 

 

============================================================================================

 

 

PS:之前通过跳转的代码如下:

 

   

    public void tiao(View v)
    {
        startActivity(new Intent(this,Main2Activity.class));
    }

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

页面跳转,保证栈中最多只有该活动的唯一实例,从而避免无谓的重复返回。

 

 

第一个页面;

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/btn_jump_second"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="跳到第二个页面"
        android:textColor="#000000"
        android:textSize="17sp" />

</LinearLayout>
package com.example.myapplication;

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


public class MainActivity extends AppCompatActivity implements View.OnClickListener {


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


        findViewById(R.id.btn_jump_second).setOnClickListener(this);
    }

    @Override
    public void onClick(View v)
    {
        if (v.getId() == R.id.btn_jump_second)
        {
            // 创建一个意图对象,准备跳到指定的活动页面
            Intent intent = new Intent(this, JumpSecondActivity.class);

            // 栈中存在待跳转的活动实例时,则重新创建该活动的实例,并清除原实例上方的所有实例
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // 设置启动标志

            startActivity(intent); // 跳转到意图对象指定的活动页面
        }
    }
}

1895087-20220703160532942-760967264.png

 

 1895087-20220703160604594-2087431145.png

 

 

 

 

 

 

 

 

 

 

第二个页面:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/btn_jump_first"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="跳到第一个页面"
        android:textColor="#000000"
        android:textSize="17sp" />

</LinearLayout>
package com.example.myapplication;

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

public class JumpSecondActivity extends AppCompatActivity implements View.OnClickListener
{

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

        findViewById(R.id.btn_jump_first).setOnClickListener(this);
    }

    @Override
    public void onClick(View v)
    {
        if (v.getId() == R.id.btn_jump_first)
        {
            // 创建一个意图对象,准备跳到指定的活动页面
            Intent intent = new Intent(this, MainActivity.class);

            // 当栈中存在待跳转的活动实例时,则重新创建该活动的实例,并清除原实例上方的所有实例
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // 设置启动标志

            startActivity(intent); // 跳转到意图指定的活动页面
        }
    }
}

1895087-20220703160710223-1517683800.png

 

 1895087-20220703160728162-1510763595.png

 

 

 

 

 

 

 

 

 

 

 

1895087-20220703160750630-729250688.png

 

 1895087-20220703160804209-727347840.png

 

 1895087-20220703160818036-1493537492.png

 

 

 

 

 

 

 

==============================================================================

 

 

 

 

 

登录成功后,不再返回登录界面:

 

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:text="这里是登录验证页面,此处省略了用户名和密码等输入框"
        android:textColor="#000000"
        android:textSize="17sp" />

    <Button
        android:id="@+id/btn_jump_success"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="跳到登录成功页面"
        android:textColor="#000000"
        android:textSize="17sp" />

</LinearLayout>
package com.example.myapplication;

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


public class MainActivity extends AppCompatActivity implements View.OnClickListener {


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


        findViewById(R.id.btn_jump_success).setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.btn_jump_success) {
            // 创建一个意图对象,准备跳到指定的活动页面
            Intent intent = new Intent(this, LoginSuccessActivity.class);
            // 设置启动标志:跳转到新页面时,栈中的原有实例都被清空,同时开辟新任务的活动栈
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent); // 跳转到意图指定的活动页面
        }
    }
}

1895087-20220703162257122-227880449.png

 

 1895087-20220703162312267-2041252910.png

 

 

 

 

 

 

 

 

 

 

 

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="5dp"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="这里是登录成功页面,登录成功之后不必返回登录验证页面。请按返回键观察看看"
        android:textColor="#000000"
        android:textSize="17sp" />

</LinearLayout>
package com.example.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class LoginSuccessActivity extends AppCompatActivity {

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

1895087-20220703162358336-51800940.png

 

 1895087-20220703162408481-731020672.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1895087-20220703162426742-646130744.png

 

 1895087-20220703162438645-1305712808.png

 

 

 

 

 

点击返回按钮,然后就直接退出了。不再返回登录界面。

 

 

 

 

 

 

 

=======================================================================================

 

 

 

 

 

 

 

 

1895087-20220703162619851-520044091.png

 

 1895087-20220703162643314-2126835588.png

 

 1895087-20220703162706014-400538760.png

 

 1895087-20220703162725066-2070987341.png

 

 1895087-20220703162742731-674754855.png

 

 1895087-20220703162803468-2044998375.png

 

Link to post
Link to comment
Share on other sites

 Share

discussion group

discussion group

    You don't have permission to chat.
    • Recently Browsing   0 members

      • No registered users viewing this page.
    ×
    ×
    • Create New...