全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解Android中Activity的四大启动模式实验简述

作为Android四大组件之一,Activity可以说是最基本也是最常见的组件,它提供了一个显示界面,从而实现与用户的交互,作为初学者,必须熟练掌握。今天我们就来通过实验演示,来帮助大家理解Activity的四大启动模式。

演示效果如下:

第一步:实验前准备,相关配置文件以及Activity的建立

(1)AndroidMainfest.xml配置文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.example.administrator.intentflags">
  <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
    //另外两个activity
    <activity android:name=".Main2Activity"> </activity>
    <activity android:name=".Main3Activity"></activity>
  </application>
</manifest>

(2)layout中三个activity的三个布局文件activity_main.xml(这里演示一个,其余两个只是下面TextView文字不一样)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:id="@+id/activity_main"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  tools:context="com.example.administrator.intentflags.MainActivity">
  <Button
    android:text="第一个页面"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:onClick="click1" />
  <Button
    android:text="第二个页面"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:onClick="click2" />
  <Button
    android:text="第三个页面"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:onClick="click3" />
  <TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    //其余两个仅文字不一样
    android:text="第一个页面"
    android:textSize="50sp"/>
</LinearLayout>

(3)java中三个activity的实现代码MainActivity.java(仅演示一个,其他两个完全相同)

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
/**
 * Created by panchengjia on 2016/12/14.
 */
public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //其他两个界面此处引用各自对应的layout文件
    setContentView(R.layout.activity_main);
  }
  public void click1(View view){
    Intent intent = new Intent(this,MainActivity.class);
    startActivity(intent);
    //记录Taskid用于实验说明
    Log.i("Tag","页面一taskId:"+getTaskId());
  }
  public void click2(View view){
    Intent intent = new Intent(this,Main2Activity.class);
    startActivity(intent);
    Log.i("Tag","页面二taskId:"+getTaskId());
  }
  public void click3(View view){
    Intent intent = new Intent(this,Main3Activity.class);
    startActivity(intent);
    Log.i("Tag","页面三taskId:"+getTaskId());
  }
}

第二步:standard默认(标准)模式下的演示实验

默认模式,可以不用写配置。在这个模式下,都会默认创建一个新的实例。因此,在这种模式下,可以有多个相同的实例,也允许多个相同Activity叠加。

我们的操作结果如下图:

log图如下(未记录回退log):

通过分析操作图以及log,得出这种Standard模式是每次都会创建新的Activity对象,当点击返回按钮时,他会将栈顶(当前Activity)消灭,然后跳 到下一层,这种模式可能大多数情况下不是我们需要的,因为对系统性能的消耗过大。

第三步:singleTop模式下的演示实验(设置页面二为singleTop)

在当前任务栈中,判断栈顶是否为当前的Activity,如果是,就直接使用,如果不是,再创建新的Activity放入栈顶。

AndroidMainfest.xml中设置代码如下:

<activity android:name=".Main2Activity"
      android:launchMode="singleTop"> </activity>

我们的操作结果如下图:

log图如下(未记录回退log):

分析此启动模式和singleTop在名字上即可看出区别,即singleTop每次只检测当前栈顶的Activity是否是我们需要请求创建的,而 singleTask则会检测栈中全部的Activity对象,从上向下,如果检测到是我们所请求的则会消灭此Activity对象上面的对象,直接把检测到的我们需要的Activity置为栈顶。

第四步:singleTask模式下的演示实验(设置页面二为singleTask)

在当前任务栈中,判断栈里是否存在Activity,如果不存在,创建一个新Activity入栈,如果存在,会把该Activity之上的所有Activity清除出栈,显示当前Activity。

AndroidMainfest.xml中设置代码如下:

  <activity android:name=".Main2Activity"
      android:launchMode="singleTask"> </activity>

我们的操作结果如下图:

log图如下(未记录回退log):

只有一个实例。在同一个应用程序中启动他的时候,若Activity不存在,则会在当前task创建一个新的实例,若存在,则会把task中在其之上的其它Activity destory掉并调用它的onNewIntent方法。如果是在别的应用程序中启动它,则会新建一个task,并在该task中启动这个Activity,singleTask允许别的Activity与其在一个task中共存,也就是说,如果我在这个singleTask的实例中再打开新的Activity,这个新的Activity还是会在singleTask的实例的task中。

第五步:singleInstance模式下的演示实验(设置页面二为singleInstance)

新创建一个任务栈,放入新创建的Activity,该任务栈只允许存在一个Activity实例,如果已存在,那么会切换到该任务栈。

AndroidMainfest.xml中设置代码如下:

<activity android:name=".Main2Activity"
       android:launchMode="singleInstance"> </activity>

我们的操作结果如下图:

 

log图如下(未记录回退log):

浏览器工作原理类似,我们都知道在多个程序中访问浏览器时,如果当前浏览器没有打开,则打开浏览器,否则会在当前打开的浏览器中访问。此模式会节省大量的系统资源,因为他能保证要请求的Activity对象在当前的栈中只存在一个。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# activity四大启动模式  # android  # 启动activity  # activity  # 关于Android中点击通知栏的通知启动Activity问题解决  # Android中activity的启动模式  # Android利用Intent启动和关闭Activity  # Android编程中Activity的四种启动模式  # Android 启动另一个App/apk中的Activity实现代码  # 则会  # 多个  # 模式下  # 创建一个  # 如下图  # 未记录  # 第一个  # 二为  # 会在  # 不存在  # 配置文件  # 应用程序  # 检测到  # 是在  # 我在  # 在这个  # 并在  # 第二个  # 在这种  # 只有一个 


相关文章: 建站主机如何安装配置?新手必看操作指南  Thinkphp 中 distinct 的用法解析  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  用v-html解决Vue.js渲染中html标签不被解析的问题  建站主机与虚拟主机有何区别?如何选择最优方案?  网站制作员失业,怎样查看自己网站的注册者?  如何通过山东自助建站平台快速注册域名?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  导航网站建站方案与优化指南:一站式高效搭建技巧解析  表情包在线制作网站免费,表情包怎么弄?  南平网站制作公司,2025年南平市事业单位报名时间?  如何解决VPS建站LNMP环境配置常见问题?  C++时间戳转换成日期时间的步骤和示例代码  零服务器AI建站解决方案:快速部署与云端平台低成本实践  哈尔滨网站建设策划,哈尔滨电工证查询网站?  如何配置WinSCP新建站点的密钥验证步骤?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  音响网站制作视频教程,隆霸音响官方网站?  外汇网站制作流程,如何在工商银行网站上做外汇买卖?  网站企业制作流程,用什么语言做企业网站比较好?  建站之星导航配置指南:自助建站与SEO优化全解析  如何快速搭建高效服务器建站系统?  阿里云网站制作公司,阿里云快速搭建网站好用吗?  如何通过NAT技术实现内网高效建站?  如何设置并定期更换建站之星安全管理员密码?  如何快速搭建响应式可视化网站?  相册网站制作软件,图片上的网址怎么复制?  建站之星备案流程有哪些注意事项?  ,购物网站怎么盈利呢?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  b2c电商网站制作流程,b2c水平综合的电商平台?  定制建站如何定义?其核心优势是什么?  制作电商网页,电商供应链怎么做?  建站之星ASP如何实现CMS高效搭建与安全管理?  详解jQuery停止动画——stop()方法的使用  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  北京建设网站制作公司,北京古代建筑博物馆预约官网?  无锡营销型网站制作公司,无锡网选车牌流程?  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  韩国服务器如何优化跨境访问实现高效连接?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  如何在西部数码注册域名并快速搭建网站?  网站网页制作专业公司,怎样制作自己的网页?  如何选择网络建站服务器?高效建站必看指南  如何在万网ECS上快速搭建专属网站?  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。