Activity launch mode (launchMode) detailed explanation

Activity launch mode (launchMode) detailed explanation

There are four Activity startup modes: standard, singleTop, singleTask, and singleInstance.

1.standard

Standard is the default startup mode of Activity. All activities will automatically use this startup mode if no explicit specification is made.

Each time you start a new Activity, it is placed at the top of the stack.

android:launchMode="standard", each click of the button will create a new Activity

Now, let's write a simple button to jump to Activity

  1. private Button button;
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.activity_main);
  6. Log.e( "MainActivity" ,this.toString());
  7. button = (Button)findViewById(R.id.button);
  8. button.setOnClickListener(new View .OnClickListener() {
  9. @Override
  10. public void onClick( View   view ) {
  11. Intent intent = new Intent(MainActivity.this, MainActivity.class);
  12. startActivity(intent);
  13. }
  14. });
  15. }

Although the page you jump to is the same, a new Activity is created each time you click the button in Task.

Activity creates log

Startup example diagram

2.singleTop

When the startup mode of the Activity is singleTop, and the started Activity is already at the top of the Activity stack, it is used directly.

android:launchMode="singleTop"

We create NextActivity and add button2 in MainActivity

  1. private Button button1,button2;
  2.  
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.activity_main);
  7. Log.e( "MainActivity" , this.toString());
  8. button1 = (Button) findViewById(R.id.button1);
  9. button2 = (Button) findViewById(R.id.button2);
  10. button1.setOnClickListener(this);
  11. button2.setOnClickListener(this);
  12.  
  13. }
  14.  
  15. @Override
  16. public void onClick( View   view ) {
  17. switch ( view .getId()){
  18. case R.id.button1:
  19. Intent intent = new Intent(MainActivity.this, MainActivity.class);
  20. startActivity(intent);
  21. break;
  22. case R.id.button2:
  23. Intent intent2 = new Intent(this, NextActivity.class);
  24. startActivity(intent2);
  25. break;
  26. }
  27. }

At this time, if you start MainActivity in MainActivity, it will only be created once in the Activity stack; but if you start NextActivity first and then start MainActivity, a new MainActivity will be created because the top of the Activity stack is NextActivity.

MainActivity ->MainActivity ->MainActivity

MainActivity -> NextActivity -> MainActivity

Startup example diagram

3.singleTask

When the launch mode of an activity is singleTask, starting the activity will check whether it already exists in the stack. If it does, all activities above it will be popped out of the stack.

android:launchMode="singleTask"

Startup example diagram

4.singleInstance

In singleInstance mode, there will be a separate back stack to manage activities. No matter which application accesses the activity, they all share the same stack, which allows other programs to call and share the activity.

android:launchMode="singleInstance"

Startup example diagram

The startup process in the figure is: Main -> New -> Next. This process is easy to understand.

The return process is: Next -> Main -> New

Obviously the order is different, why does this happen?

NextActivity and MainActivity are in the same stack. When we return, NextActivity is popped out of the stack. At this time, MainActivity still exists in stack A and is at the top of the stack, so MainActivity is seen.

When MainActivity returns, stack A is cleared, and then we see NewActivity on stack B.

After that, NewActivity is popped out of the stack, and when stack B is also empty, the App exits.

This is a brief introduction to the Activity startup mode. I hope it will be helpful to you. Please correct me if there are any deficiencies or errors.

There will be at least one update to this series every week. If you are interested, please follow it.

Learn together and improve together.

<<:  Four advantages and five applications of machine learning in the financial field

>>:  Introducing the attention mechanism into RNN to solve sequence prediction problems in five major areas

Recommend

To save the endangered king of beasts, the first challenge is... anesthesia?

In traditional Chinese culture, the tiger is the ...

Plant Doctor - Parasitic Wasp

In the process of forestry and agricultural produ...

An unexpected discovery shocked scientists: How cool can atoms be?

I believe that in the previous article "You ...