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

Three highs? Out! It’s necessary to understand this “fourth high” →

Popular Science Times reporter Shi Qi Recently, a...

Why do the groups you created eventually become dead groups?

If you create a community just for the sake of cr...

10 marketing insights that only top players understand!

1. To develop a marketing style for your company,...

"Happy Candy Crush" APP Operation Analysis

Happy Match 3 is a strategy game developed by Ten...

How to sell Meizu 923 router with low appearance and no 5G?

Third-party companies may promote their products ...

Zero-based fat reduction and body shaping—suitable for both men and women

Zero-based fat reduction and body shaping—suitabl...

What are the benefits of adding Baidu framework users to the public?

Friends who have opened an account know that Baid...

More contagious! Where does the locally transmitted BA.5 variant come from?

In recent days, local epidemics have reappeared i...

When developing mobile apps, you should avoid these 5 details

The popularity of smartphones has led to the birt...

Reality is your brain's best guess

© Brain Latam Leviathan Press: We often joke abou...

How does Bilibili’s interactive video marketing promotion work?

On July 8, Bilibili officially announced the laun...