• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android中Activity的四大启动模式实验简述,androidactivity

Android中Activity的四大启动模式实验简述,androidactivity

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android baseactivity,android.app.activity,android 关闭activity,android 刷新activity,android listactivity等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android中Activity的四大启动模式实验简述,androidactivity


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

演示效果如下:

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

(1)AndroidMainfest.xml配置文件

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="com.example.administrator.intentflags">
 4     <application
 5         android:allowBackup="true"
 6         android:icon="@mipmap/ic_launcher"
 7         android:label="@string/app_name"
 8         android:supportsRtl="true"
 9         android:theme="@style/AppTheme">
10         <activity android:name=".MainActivity">
11             <intent-filter>
12                 <action android:name="android.intent.action.MAIN" />
13 
14                 <category android:name="android.intent.category.LAUNCHER" />
15             </intent-filter>
16         </activity>
17         //另外两个activity
18         <activity android:name=".Main2Activity"> </activity>
19         <activity android:name=".Main3Activity"></activity>
20     </application>
21 </manifest>

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

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout
 3     xmlns:android="http://schemas.android.com/apk/res/android"
 4     xmlns:tools="http://schemas.android.com/tools"
 5     android:id="@+id/activity_main"
 6     android:layout_width="match_parent"
 7     android:layout_height="match_parent"
 8     android:orientation="vertical"
 9     tools:context="com.example.administrator.intentflags.MainActivity">
10     <Button
11         android:text="第一个页面"
12         android:layout_width="match_parent"
13         android:layout_height="wrap_content"
14         android:onClick="click1" />
15     <Button
16         android:text="第二个页面"
17         android:layout_width="match_parent"
18         android:layout_height="wrap_content"
19         android:onClick="click2" />
20     <Button
21         android:text="第三个页面"
22         android:layout_width="match_parent"
23         android:layout_height="wrap_content"
24         android:onClick="click3" />
25     <TextView
26         android:layout_width="match_parent"
27         android:layout_height="match_parent"
28         //其余两个仅文字不一样
29         android:text="第一个页面"
30         android:textSize="50sp"/>
31 </LinearLayout>

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

 1 import android.content.Intent;
 2 import android.support.v7.app.AppCompatActivity;
 3 import android.os.Bundle;
 4 import android.util.Log;
 5 import android.view.View;
 6 /**
 7  * Created by panchengjia on 2016/12/14.
 8  */
 9 public class MainActivity extends AppCompatActivity {
10 
11     @Override
12     protected void onCreate(Bundle savedInstanceState) {
13         super.onCreate(savedInstanceState);
14         //其他两个界面此处引用各自对应的layout文件
15         setContentView(R.layout.activity_main);
16     }
17     public void click1(View view){
18         Intent intent = new Intent(this,MainActivity.class);
19         startActivity(intent);
20         //记录Taskid用于实验说明
21         Log.i("Tag","页面一taskId:"+getTaskId());
22     }
23     public void click2(View view){
24         Intent intent = new Intent(this,Main2Activity.class);
25         startActivity(intent);
26         Log.i("Tag","页面二taskId:"+getTaskId());
27     }
28     public void click3(View view){
29         Intent intent = new Intent(this,Main3Activity.class);
30         startActivity(intent);
31         Log.i("Tag","页面三taskId:"+getTaskId());
32     }
33 }

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

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

我们的操作结果如下图:

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

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

 

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

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

AndroidMainfest.xml中设置代码如下:

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

我们的操作结果如下图:

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

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

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

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

AndroidMainfest.xml中设置代码如下:




 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android中activity的启动模式,androidactivity
  • Android之Activity系列总结(一)--Activity概览,android--activity
  • Android—Service与Activity的交互,androidactivity
  • Android中Activity处理返回结果的实现方式,androidactivity
  • Android中Activity的四大启动模式实验简述,androidactivity
  • Android中Activity运行时屏幕方向与显示方式详解,androidactivity
  • Android生命周期,activity生命周期
  • Android 面试题--Activity,android--activity
  • Android 四大组件之Activity(续2),androidactivity
  • Android动态加载Activity原理

相关文章

  • 2017-05-26Android Studio 2.0下创建jni应用调用本地C函数
  • 2017-05-223.4 TouchListener PK OnTouchEvent + 多点触碰
  • 2017-05-26RecyclerView在软键盘弹出时自动调整内容技巧,recyclerview技巧
  • 2017-05-26大神都是有个起点的,大神都是起点
  • 2017-05-26仿微信底部TAG完美渐变,tag渐变
  • 2017-05-26我的android学习经历15,android学习经历15
  • 2017-05-26小明学习Linux运维实战演练
  • 2017-05-26安卓开发树形控件之ExpandableListView(一),expandablelistview
  • 2017-05-26android:使用gallery和imageSwitch制作可左右循环滑动的图片浏览器
  • 2017-05-26Winform突然不响应KeyEvent了

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 【React Native开发】React Native控件之DrawerLayoutAndroid抽屉导航切换组件讲解(13)
    • lesson15-QT多线程
    • 实现在矩形框中输入文字,可以显示剩余字数的功能,矩形字数
    • Android 颜色Color,android颜色color
    • Android动态资源加载原理和应用
    • 在Android studio中进行单元测试和ui测试的分析
    • 利用SQL实现简单的分布式锁
    • 2.5.0 构建一个可复用的自定义BaseAdapter
    • Android之上下文context,androidcontext
    • Glide生命周期管理

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有