在minifest.xml中的<activity>元素的launchmode属性可以设置四种不同的加载模式:
“standard”(默认值)
“singleTop”
“singleTask”
“singleInstance”
以下表格是纯考虑launchmode设置情况下作出比较
|
哪个Task把持对intent作出响应的activity |
Activity是否可以存在多个实例 |
在实例所在的Task是否会有别的Activity |
是否载入新的类实例来处理新的intent |
standard |
产生intent的任务 |
可以被多次初始胡,每个实例可以归属于不同的Task |
其它Activity可以出现在它所在Task的任意位置 |
对每个新的intent都会创建新的实例 |
singleTop |
产生intent的任务
|
可以被多次初始胡,每个实例可以归属于不同的Task |
其它Activity可以出现在它所在Task的任意位置 |
如果Activity处于当前Task堆栈的最顶端,则重用Activity,不需要创建新的实例。否则需要重新创建实例 |
singleTask |
定义的新的task
|
只有一个实例 |
是Task的根Activity,可以将其它Activity载入到它所在Task中,并在它的上方 |
不创建新实例。
如果Activity不在堆栈最顶端,则忽略该Intent并且同时Task被激活,切换至前台。如果在最顶端,那么处理Intent。 |
singleInstance |
定义的新的task
|
只有一个实例 |
不存在 |
不创建新实例。因为它始终在Task的栈顶,因此始终能处理Intent |
对于launchmode对于Activity生命周期的影响还需要考虑 Intent中的Flag值。
FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
FLAG_ACTIVITY_SINGLE_TOP
如果是FLAG_ACTIVITY_NEW_TASK的标记,对于standard或者singleTop启动模式的activity也会重新新建一个Task。
在实际开发中,我们有一个需求,保证某个activity只有一个实例。这里会碰到一个case:
1.start Activity from gallery
2.start other apps until step1 activity be destroyed by system.
3.start Activity from other app.can start but can't stop the old activity.
4.click gallery. start the old activity by system.
这个case里面会产生两个实例。
暂时无解。
分享到:
相关推荐
以下是对这一主题的详细说明: 1. **Tab布局**:在Android中,Tab布局通常用于创建一个多面板的用户界面,用户可以通过点击不同的标签来切换不同的内容视图。早期,开发者常使用`TabHost`和`TabWidget`来实现,但...
此外,`Activity`可以通过设置不同的启动模式(如标准模式、单实例模式、单任务模式、单栈顶模式)来改变其在任务栈中的行为。 `Activity`的权限管理也是开发中需要注意的一环,某些敏感操作如读写文件、访问网络等...
本篇文章将详细解析在Android中创建Activity的过程及其相关知识点。 首先,理解Activity的定义和作用至关重要。Activity是一个可视化的用户接口,它可以是全屏窗口,也可以以浮动窗口或嵌入到其他Activity的形式...
然而,通过设置不同的Intent Flag,如FLAG_ACTIVITY_NEW_TASK或FLAG_ACTIVITY_SINGLE_TOP,可以改变Activity的启动模式,实现不同的栈管理效果,比如单实例模式、栈顶复用等。 例如,使用FLAG_ACTIVITY_NEW_TASK...
本教程将围绕"安卓换肤主题更换夜间模式"这一主题,通过XML文件加载主题风格进行详细讲解。 首先,XML文件在安卓开发中扮演着至关重要的角色,它是用来定义资源和数据结构的主要方式。在主题更换中,XML文件通常...
以下是对这一技术的详细说明: 1. **插件框架设计**: 插件开发的核心是构建一个能够容纳和管理插件的框架。这个框架通常包括一个宿主应用(Host App)和多个插件应用(Plugin App)。宿主应用负责加载和控制插件...
ListView通过Adapter来绑定数据,并使用ViewHolder模式提高渲染效率。当ListView滚动时,只有可见的item会被绘制,这样可以有效地减少内存的占用。而实现分页加载更多,我们需要在ListView滚动到底部时触发加载新...
以上就是关于“一个Activity中多个ListView的整体滑动”的详细说明,希望对你理解Android中ListView的使用和滑动效果的实现有所帮助。在实际开发中,灵活运用这些技术,可以创建出更加丰富和用户友好的界面。
以下是对这些知识点的详细说明: 1. **RecyclerView**: RecyclerView是Android SDK中的一个视图组件,它替代了ListView,提供了更强大的性能和更多的定制选项。RecyclerView通过ViewHolder模式优化了性能,减少了...
点击事件中,根据当前模式切换到另一个主题,并调用`recreate()`方法,使Activity重新加载并应用新的主题。 5. **持久化状态**: 用户选择的主题模式需要在应用重启后保持,因此需要将用户的首选项保存。可以利用...
这个目录可能包含了项目的源代码,包括 Activity(负责处理用户交互)、Fragment(界面模块)、Adapter(数据绑定)等关键类。开发者可以深入研究这些代码,学习如何组织和架构一个复杂的 Android 应用。 7. **...
在Android应用开发中,"上拉刷新下拉加载"是一种常见的用户交互模式,它极大地提升了用户体验,让用户在浏览数据时能够方便地获取更多内容。这个控件通常被称为SwipeRefreshLayout或PullToRefreshLayout,允许用户...
下面是对Android 2.2源码结构的详细说明。 1. **源码仓库**:Android源码主要存储在Git仓库中,由Android开放源代码项目(AOSP)管理。开发者可以访问[https://source.android.com/](https://source.android.com/)...
`onLoadComplete()`是引擎创建完成后的回调,适合在这个阶段加载纹理和其他资源。`dispose()`在游戏退出时被调用,用于释放资源,避免内存泄漏。 `RokonActivity`还提供了几个获取界面尺寸和布局的函数,如`...
图片较大 加载会慢一些 耐心等待Demo Activity1Demo Activity2使用说明:Activity滑动返回<!--设置主题属性--> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> name=...
开发者可以设置动画的起始和结束坐标,以及动画的持续时间和重复模式,以达到理想的效果。 其次,scale动画用于改变控件的大小,可以增加或减小其宽度和高度。`ScaleAnimation`类提供了相应的属性来设定缩放的中心...
总结起来,`LoadingLayout`是Android应用中一种重要的UI设计模式,用于管理各种加载状态。通过自定义布局和对应的Java类,我们可以轻松地在应用中实现这种功能,为用户提供更加友好的交互体验。`LoadingLayoutDemo`...
- **组件生命周期**:详细说明了Activity、Service和BroadcastReceiver等组件的生命周期。 - **进程与生命周期**:探讨了进程的生命周期,以及如何处理应用程序的内存使用。 - **应用程序基础**:概括了Android应用...
以下是对其中涉及的关键知识点的详细解释: 1. **上拉刷新与下拉加载**: 这是移动应用中常见的滚动刷新机制。上拉刷新允许用户在滚动到列表底部时加载更多数据,而下拉加载则在用户滚动到顶部时更新内容。这种...
在这个案例中,虽然描述中没有详细说明,但我们可以假设`MvpWeather`项目中的Model层可能包含了与天气相关的数据处理逻辑,如获取天气预报、解析JSON数据等。 2. **View层**:视图是用户界面的呈现,通常对应于...