<Activity>的启动模式 之(二)SingleTask模式

本文介绍了Android中SingleTask模式下Activity的启动流程与特点。通过两个Activity的交互实例,展示了不同启动模式如何影响任务栈内的Activity状态变化。

一路坎坷走过,也就长大了。时间桥头,香花满径。亲爱的梦想家,现在不对自己狠一点,当“少年”等不了你的时候,再狠也是徒劳无功!


程序将SecondActivity 的启动模式设置为 singleTask.
当程序启动时默认打开 SingleTaskActivity ,点击该Activity上的按钮时,系统已singleTask模式打开 SecondActivity ,此时Task 任务栈内有2个Activity(从底向上); SingleTaskActivity —> SecondActivity
再次点击SecondActivity 界面上的 按钮,系统以标准模式再次加载一个新的 SingleTaskActivity .此时Task 任务栈内有3个Activity(从底向上); SingleTaskActivity —> SecondActivity —>SingleTaskActivity ;
在 SingleTaskActivity 界面点击按钮打开 系统再次以singleTask模式打开 SecondActivity .系统将位于SecondActivity 上面所有的Activity移出.使 SecondActivity 进入栈顶. 此时的Task 任务栈内又再次有2个Activity(从底向上); SingleTaskActivity —> SecondActivity

package com.test.activitylunchmode.singleTask;

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

public class SingleTaskActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);
        setContentView(layout);

        //创建一个TextView 来显示 Activity 的 TaskId
        TextView tv = new TextView(this);

        tv.setText("该 Activity为:"+this.toString()+"\n"+"Task ID 为: "+this.getTaskId());
        Log.d("MainActivity", this.toString());

        Button btn = new Button(this);
        btn.setText("启动 SecondActivity");

        layout.addView(tv);
        layout.addView(btn);


        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(SingleTaskActivity.this, SecondActivity.class);
                startActivity(intent);
            }
        });
    }
}

package com.test.activitylunchmode.singleTask;

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

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);
        setContentView(layout);

        //创建一个TextView 来显示 Activity 的 TaskId
        TextView tv = new TextView(this);

        tv.setText("该 Activity为:"+this.toString()+"\n"+"Task ID 为: "+this.getTaskId());
        Log.d("MainActivity", this.toString());

        Button btn = new Button(this);
        btn.setText("启动 SingleTaskActivity");

        layout.addView(tv);
        layout.addView(btn);


        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(SecondActivity.this, SingleTaskActivity.class);
                startActivity(intent);
            }
        });
    }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值