Android活动的启动模式

摘要:
Android使用返回堆栈来管理活动。在标准模式下,每当启动一个新活动时,它都会被放在返回堆栈上并放在堆栈的顶部。设置为singleTop模式:1345673。SingleTask旨在使活动在整个应用程序的上下文中只有一个实例。每次启动活动时,系统都会首先检查该活动是否存在于返回堆栈中,只有当它不存在时才会创建它。如果是,它将直接使用返回堆栈的活动。

1. standard

  标准模式,是活动默认的启动模式,在不进行显示指定的情况下,所有活动都会自动使用这种模式。

  Android使用返回栈管理活动,在standard模式下,每当启动一个新的活动,它就会在返回栈中入栈,并处在栈顶位置。

  例如:

Android活动的启动模式第1张Android活动的启动模式第2张
 1 public class FirstActivity extends AppCompatActivity {
 2     @Override
 3     protected void onCreate(Bundle savedInstanceState) {
 4         super.onCreate(savedInstanceState);
 5         //提示信息
 6         Toast.makeText(this, "FirstActivity" + this, Toast.LENGTH_SHORT).show();
 7         setContentView(R.layout.activity_first);
 8         Button btn = findViewById(R.id.btn1);
 9         btn.setOnClickListener(new View.OnClickListener() {
10             @Override
11             public void onClick(View v) {
12                 Intent intent = new Intent(FirstActivity.this, FirstActivity.class);
13                 startActivity(intent);
14             }
15         });
16     }
17 }
FirstActivity.java

  从输出信息可以看出,当点击new activity时,会新建一个活动,执行了onCreate方法。

Android活动的启动模式第3张

2. singleTop

  如果要启动一个活动,当栈顶已经存在了该活动,那么不会再次新建这个活动;反正,如果这个活动不在栈顶,仍然会新建这个活动。

  可能有些时候,绝对standard模式不太合理,活动已经在栈顶了,为什么还要启动新的活动?

  设置为singleTop模式:

1 <activity android:name=".FirstActivity"
2     android:launchMode="singleTop">
3     <intent-filter>
4         <action android:name="android.intent.action.MAIN" />
5         <category android:name="android.intent.category.LAUNCHER" />
6     </intent-filter>
7 </activity>

3.singleTask

  目的是让某个活动在整个应用程序的上下文中只存在一个实例。每次启动活动时,系统会首先检查返回栈中是否存在这个活动,只有不存在才会创建,如果找到,直接使用返回栈的活动。

Android活动的启动模式第4张

4.singleInstance

   启动一个新的返回栈来管理这个活动。

  实现多个程序共享活动,多个应用程序共享这个返回栈。

免责声明:文章转载自《Android活动的启动模式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WinForm控件之【TreeView】LMC7660即-5V产生电路下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

android 之 桌面的小控件AppWidget

AppWidget是创建的桌面窗口小控件,在这个小控件上允许我们进行一些操作(这个视自己的需要而定)。作为菜鸟,我在这里将介绍一下AppWeight的简单使用。 1.在介绍AppWidget之前,我们先来了解一下PendingIntent和RemoteViews; PendingIntent:A description of an Intent and t...

关于JavaScriptInterface的一系列问题

先明确主题,主要做了什么。 接手时app主体是混合开发,以elipse+android SDK为开发环境,但我是个渣渣,我只会用AS,就转成了AS,这部分等会新开文章写。 主要的view只有一个activity_main,里边写了个webview,在mainactivity里去掉了actionbar,一个导入库都没有有四个jar包,然后所有的HTML代码放...

Android 多媒体------相机

一.拍照 1.设置使用相机权限 为了让用户知道我们的应用需要依赖相机,在Manifest清单文件中添加<uses-feature>标签: <manifest ... > <uses-feature android:name="android.hardware.camera" andr...

Android Service和广播

前言: 我们都知道Android的四大基本组件:Activity、ContentProvider、Service以及BroadcastReceiver,前面的两个我们在前几篇已经具体讲解了,今天这一天我们就把后两者的使用具体说一下,由于Service和BroadcastReceiver常常一起使用,所以我们一起来学习。     一.Service的使用 S...

android 定时器的使用

1、android中通常是使用AlarmManager来定时启动一个单次或重复多次操作的。具体的说就是我们通过AlarmManager设定一个时间和注册一个intent到系统中,然后在该时间到来时,系统为我们发送一个广播,即执行我们设定的Intent(要执行的操作),通常我们使用 PendingIntent来实现“要执行的操作”,PendingIntent...

状态通知栏

在android的应用层中,涉及到很多应用框架,例如:Service框架,Activity管理机制,Broadcast机制,对话框框架,标题栏框架,状态栏框架,通知机制,ActionBar框架等等。 下面就来说说经常会使用到通知机制中的通知栏框架(Notificaiton),它适用于交互事件的通知。它是位于顶层可以展开的通知列表。它会时不时的提醒你什么软件...