`
80demon
  • 浏览: 77788 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Avtivity加载模式详解

 
阅读更多
  一、何为加载模式
  
  在android的多activity开发中,activity之间的跳转可能需要有多种方式,有时是普通的生成一个新实例,有时希望跳转到原来某个activity实例,而不是生成大量的重复的activity。加载模式便是决定以哪种方式启动一个跳转到原来某个Activity实例。
  
  二、加载模式有哪些以及如何配置
  
  1、在android里面,activity有四种加载模式:standard,singleTop,singleTask,singleInstance。详细介绍在后面。
  
  2、配置方法
  
  直接修改AndroidManifest.xml文件,如要给一个名为Act1的activity指定其加载模式为singleTask,只需添加以下语句:
  
  <activityandroid:name="Act1"android:launchMode="singleTask">
  
  </activity>
  
  
  
  三、四种加载模式介绍
  
  1、standard:系统的默认模式,一次跳转即会生成一个新的实例。假设有一个activity命名为Act1,执行语句:
  
  startActivity(newIntent(Act1.this,Act1.class));
  
  后Act1将跳转到另外一个Act1,也就是现在的栈里面有Act1的两个实例。按返回键后你会发现仍然是在Act1(第一个)里面。
  
  2、singleTop:singleTop跟standard模式比较类似。唯一的区别就是,当跳转的对象是位于栈顶的activity(应该可以理解为用户眼前所看到的activity)时,程序将不会生成一个新的activity实例,而是直接跳到现存于栈顶的那个activity实例。拿上面的例子来说,当Act1为singleTop模式时,执行跳转后栈里面依旧只有一个实例,如果现在按返回键程序将直接退出。这个貌似用得比较少。
  
  3、singleTask:singleTask模式和后面的singleInstance模式都是只创建一个实例的。在这种模式下,无论跳转的对象是不是位于栈顶的activity,程序都不会生成一个新的实例(当然前提是栈里面已经有这个实例)。我觉得这种模式相当有用。。在以后的多activity开发中,经常会因为跳转的关系导致同个页面生成多个实例,这个在用户体验上始终有点不好,而如果你将对应的activity声明为singleTask模式,这种问题将不复存在。不过前阵子好像又看过有人说一般不要将除开始页面的其他页面设置为singleTask模式。。原因暂时不明,哪位知道的可以请教下。
  
  4、singleInstance:看网上的解释好像都比较复杂。刚开始也没怎么明白这种模式,只知道它用的也不多。后来仔细看了网上的解释,稍微有些懂了。就按我的理解解释下。设置为singleInstance模式的activity将独占一个task(感觉task可以理解为进程),独占一个task的activity与其说是activity,倒不如说是一个应用,这个应用与其他activity是独立的,它有自己的上下文activity。拿一个例子来说明吧:
  
  现在有以下三个activity:Act1、Act2、Act3,其中Acti2为singleInstance模式。它们之间的跳转关系为:Act1--Act2--Act3,现在在Act3中按下返回键,由于Act2位于一个独立的task中,它不属于Act3的上下文activity,所以此时将直接返回到Act1。这就是singleInstance模式
分享到:
评论

相关推荐

    Android动态加载Activity原理详解

    `ActivityInfo`包含了Activity的元数据,如启动模式、主题等,而`loadedApk`则包含了与应用相关的所有信息,如类加载器、资源等。 在启动过程中,`ActivityClientRecord`的`packageInfo`字段起初为null,需要通过`...

    Android 四种加载模式

    ### Android 四种加载模式详解 在Android应用开发中,理解Activity的加载模式至关重要,它直接关系到应用程序的性能和用户体验。本篇文章将深入解析四种加载模式:`standard`、`singleTop`、`singleTask`和`...

    ViewPager加载Activity

    **ViewPager加载Activity详解** ViewPager是Android开发中一个非常重要的组件,它主要用于实现界面间的滑动切换效果,使得用户可以通过左右滑动来浏览多个视图。在Android应用设计中,ViewPager通常与Fragment配合...

    23种设计模式详解及案例

    "23种设计模式详解及案例"涵盖了这些模式的理论基础和实际应用,旨在帮助开发者更好地理解和掌握它们。 1. **单例模式**:保证一个类只有一个实例,常用于管理共享资源,如数据库连接。在Android中,单例模式常用于...

    Activity配置、启动和关闭activity实例详解

    `onStop()`通常用于释放大量资源,而`onResume()`则是在Activity恢复到前台时调用,可以在此加载所需资源。 在Activity创建完成后,必须在应用的`AndroidManifest.xml`文件中声明和注册这个Activity。`&lt;activity&gt;`...

    Android四大组件之Activity详解

    一、Activity的生命周期 首先,我们来了解一下Activity典型的生命周期 一个Activity从启动到结束会以如下顺序经历整个生命...在这个方法中,可以做一些初始化工作,比如调用setContentView去加载界面布局资源,初始化

    android的Fragment知识点详解

    - **使用EventBus**:EventBus是一种观察者模式的简化实现,可以用于解耦Fragment与Activity或其他组件之间的通信。 - **使用ViewModel**:ViewModel提供了一种跨生命周期的数据存储方式,适合用于Fragment间的数据...

    Android横竖屏切换及其对应布局加载问题详解

    例如,如果你有一个名为`activity_main.xml`的竖屏布局,那么在`layout-land`下创建一个同名文件,系统会在横屏模式下加载这个布局。 2. 动态加载布局:如果不想使用预定义的布局目录,可以通过Java代码动态判断...

    详解Android WebView加载html片段

    Android WebView加载html片段详解 Android WebView是一种基于Webkit引擎的浏览器组件,经常用于加载HTML页面或片段。今天,我们将详细介绍如何使用Android WebView加载html片段,并对其进行详细的分析。 WebView...

    Android studio加载本地html的文档问题

    ### Android Studio加载本地HTML文件详解 #### 一、引言 在进行Android应用开发时,有时需要在应用内部展示HTML内容。例如,显示帮助文档、用户手册或是简单的网页信息等。传统的Eclipse环境下,通常的做法是将...

    Android面试题集锦

    ### Android面试题集锦:详解Activity启动模式及Intent标记 #### 深入理解Activity启动模式 在Android开发中,Activity作为四大组件之一,承担着应用程序界面的主要展示任务。其启动模式是面试中常被提及的重点,...

    ActionBar详解

    **Android中的ActionBar详解** 在Android应用开发中,ActionBar是一个至关重要的组件,它是应用程序顶部的工具栏,用于展示应用的品牌、提供导航以及展示操作选项。它为用户提供了一种标准且一致的交互模式,使得...

    Android的Window类详解

    ### Android的Window类详解 #### 一、概述 在Android开发过程中,`Window`类扮演着极其重要的角色,它是应用程序与用户交互的主要界面之一。本文将深入探讨Android系统的`Window`类,包括其属性和成员函数等内容。...

    Android应用开发详解.pdf

    根据提供的标题“Android应用开发详解.pdf”以及描述“Android应用开发详解.pdf”,我们可以推断这份文档主要涵盖了关于Android平台上的应用程序开发的相关知识和技术。虽然提供的部分内容似乎并不包含具体的信息,...

    Android典型技术模块开发详解

    3.5 Activity加载模式 3.6 本章小结 第4章 Intent (意图) 4.1 显式Intent 4.2 隐式Intent 4.2.1 IntentFilter 4.2.2 调用系统组件 4.3 本章小结 第5章 BroadcastReceiver (广播) 5.1 生命周期 5.2 广播类型 ...

    Android编程中activity的完整生命周期实例详解

    在Intent中指定启动模式可以改变Activity的行为,比如单实例模式(SingleInstance)、单任务模式(SingleTask)和单栈顶模式(SingleTop)。这些模式会影响Activity如何进入返回栈和生命周期方法的调用顺序。 总之...

    MVP模式在Android开发中的最佳实践

    **MVP模式详解** 1. **Model**:模型层负责处理数据和业务逻辑,通常包括与数据库、网络接口或其他数据源的交互。保持与视图和 presenter 的解耦,使得模型层可以独立于应用程序的其他部分进行测试和更新。 2. **...

Global site tag (gtag.js) - Google Analytics