一路坎坷走过,也就长大了。时间桥头,香花满径。亲爱的梦想家,现在不对自己狠一点,当“少年”等不了你的时候,再狠也是徒劳无功!
程序将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);
}
});
}
}
本文介绍了Android中SingleTask模式下Activity的启动流程与特点。通过两个Activity的交互实例,展示了不同启动模式如何影响任务栈内的Activity状态变化。
1355

被折叠的 条评论
为什么被折叠?



