Activity启动方式有四种,分别是:
standard
singleTop
singleTask
standard
singleTop
singleTask
singleInstance
一:singleTop
可以有多个实例,但是不允许多个相同Activity叠加。即,如果Activity在栈顶的时候,启动相同的Activity,不会创建新的实例,而会调用其onNewIntent方法。
例如:
若我有两个Activity名为B1,B2,两个Activity内容功能完全相同,都有两个按钮可以跳到B1或者B2,唯一不同的是B1为standard,B2为singleTop。
若我意图打开的顺序为B1->B2->B2,则实际打开的顺序为B1->B2(后一次意图打开B2,实际只调用了前一个的onNewIntent方法)
若我意图打开的顺序为B1->B2->B1->B2,则实际打开的顺序与意图的一致,为B1->B2->B1->B2。
接下来用实例模范一次:
在这里 默认的启动模式是Standard。这里需要该启动模式
1.Main1代码
package cn.edu.bzu.activitydemo; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity { private Button btnClick; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d("MainActivity",this.toString()); btnClick=(Button)findViewById(R.id.btnClick); btnClick.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ Intent intent=new Intent(MainActivity.this,Main2Activity.class); startActivity(intent); } }); } }在这里 用Intent实现跳转。 这里跳转到Main2.
2。Main2代码。
package cn.edu.bzu.activitydemo; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; public class Main2Activity extends AppCompatActivity { private Button btnClick; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); Log.d("MainActivity",this.toString()); btnClick=(Button)findViewById(R.id.btnClick); btnClick.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ Intent intent=new Intent(Main2Activity.this,MainActivity.class); startActivity(intent); } }); } }
3.在Layout中分别为两个Activity创建Button。
4.运行程序。
在点击按钮后会转到Main2中
在下面的Android Monter可看出 程序正常运行。
在点击Back键。
在点击Back键即可退出到桌面。