Activity的启动模

四种启动模式:standard,singleTop,singleTask,singleInstance

通过在AndroidManifest.xml的<activity>标签中指定android:launchMode属性来设置启动模式


standard

standard是活动的默认启动模式,我们知道Android是通过栈来管理活动的,而此模式,系统不会验证此活动是否已经存在都会在栈顶创建新的活动实例!

例如:活动本身启动自己,启动了几次我们就要销毁几次才能关闭所有的活动。这些同样的活动在栈中也是有不同的位置名称的,可以确定是新的活动实例。


singleTop

如果指定了singleTop模式,在启动活动时系统会检测栈顶是否已经有该活动,如果有则直接使用,并不会创建新的活动实例了。

但是如果要启动的这个活动实例没有在栈顶位置,此时启动此活动实例的时候还是会重新创建此活动的实例!从他的命名Top就可以看出这个意思!


singleTask

 使用singleTask模式,系统就会检测栈中是否已经有此活动,如果有则直接使用并把这个活动上的所有活动全部清除栈,没有则新建此活动。


singleInstance

singleInstance是最复杂也是最特殊的模式了,如果活动指定了singleInstance模式,那么系统会启用一个新的栈来管理这个活动。(其实如果singleTask模式指定了不同的taskAffinity,系统也会启动新的栈)

如果在工作中需要多个应用来访问此活动实例,就需要用到此模式,其他三种启动模式是无法做到的。因为每个应用都会有自己的栈,同一个活动在不同的栈入栈时肯定会新建实例,从而导致数据不一致。而此模式新建的一个单独的栈来管理此活动,多个应用访问时就会共用同一个栈中实例,并不会新建实例了,从而解决了数据不一致的问题。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这里提供一个简单的Demo,介绍如何通过startActivity方法启动Activity: 1. 在Android Studio中创建一个新的项目,选择Empty Activity作为板。 2. 在activity_main.xml文件中添加一个按钮控件: ``` <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="启动Activity" /> ``` 3. 在MainActivity.java文件中添加代码,为按钮添加点击事件监听器,并在监听器中启动新的Activity: ```java public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取按钮控件 Button button = findViewById(R.id.button); // 为按钮添加点击事件监听器 button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 创建Intent对象 Intent intent = new Intent(MainActivity.this, NewActivity.class); // 启动NewActivity startActivity(intent); } }); } } ``` 在上述代码中,我们首先获取了一个按钮控件,然后为该按钮添加了一个点击事件监听器。当用户点击按钮时,会创建一个Intent对象,并将要启动Activity类NewActivity作为参数传入Intent构造函数中。最后,调用startActivity方法启动NewActivity。 4. 在NewActivity.java文件中添加一些布局和逻辑代码,以便展示一些内容: ```java public class NewActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_new); // 获取TextView控件 TextView textView = findViewById(R.id.textView); // 设置TextView的文本 textView.setText("这是新Activity"); } } ``` 在上述代码中,我们为新的Activity添加了一个TextView控件,并设置了该控件的文本。 5. 运行应用程序,点击按钮,可以看到新的Activity启动,并展示了相应的内容。 通过上述Demo,我们可以了解到如何使用startActivity方法启动新的Activity

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值