activity启动模式

Android基础 Activity的启动流程

余生长醉 提交于 2019-11-29 21:26:49
##概述: 从应用的启动流程来看,Activity只是一段程序的代码,它既不是程序的入口,也不是程序的必要流程.只是程序运行中的一个场景,一个组件.是基于Context扩展了特定功能接口的一个前台运行的场景. AMS通过ApplicationThread的引用代理,远程调用ApplicationThread的服务端,并通过ApplicationThread的服务端发送消息给应用程序主线程从而控制Activity的函数调用(即生命周期). Android属于多进程单窗口系统,只允许当个窗口位于前台,在下一个Activity启动之前,上一个Activity需要先Pause以失去焦点 Activty的生命周期: Activity 的整个生命周期在三个嵌套循环中: Activity 的整个生命周期发生在 onCreate() 调用与 onDestroy() 调用之间。您的 Activity 应在 onCreate() 中执行“全局”状态设置(例如定义布局),并释放 onDestroy() 中的所有其余资源。 例如,如果您的 Activity 有一个在后台运行的线程,用于从网络上下载数据,它可能会在 onCreate() 中创建该线程,然后在 onDestroy() 中停止该线程。 * Activity 的可见生命周期发生在 onStart() 调用与 onStop() 调用之间。在这段时间

Android的启动模式

爱⌒轻易说出口 提交于 2019-11-29 21:11:06
首先分析一下Activity生命周期 A跳B (A finish) 生命周期顺序 onPause(A)— onCreate(B)— onStart(B)— onResume(B)— onStop(A)— onDestroy(A) A跳B再返回A (B finish ) 生命周期顺序 onPause(A)— onCreate(B)— onStart(B)— onResume(B)— onStop(A)— onPause(B)— onRestart (A)— onStart(A)— onResume(A)— onStop(B)— onDestroy(B) 注意: onPause可以做一些存储数据、停止动画等,但是注意不能太耗时。从生命周期可以看出,必须A的onPause方法执行完,新的activity才可以执行。 onStop可以做稍微重量级的回收工作,但是同样不能太耗时。 onDestroy可以做一些回收工作和最终的资源释放。(针对应用中单例数据库并不适合在此销毁)。 Activity的启动模式 standard标准模式(系统的默认模式) 特性: 每次启动一个activity,都会创建一个新的实例,无论该实例是否存在于现在的栈中。 应用场景: 一般界面都是这个模式 非activity类型的Context(如ApplicationContext)不能直接去启动一个activity

Android中Activity的启动模式(LaunchMode)和使用场景

北城余情 提交于 2019-11-29 15:56:59
一、为什么需要启动模式 在Android开发中,我们都知道,在默认的情况下,如果我们启动的是同一个Activity的话,系统会创建多个实例并把它们一一放入任务栈中。当我们点击返回(back)键,这些Activity实例又将从任务栈中一一移除,遵循的原则是“后进先出”(先进后出)。 这里我们考虑一个问题,当我们多次启动同一个Activity,系统也会创建多个实例放入任务栈中,这样岂不是很耗费内存资源?为了解决这一问题,Android为Actiivty提供了启动模式。 Activity的启动模式有四种:standard、singleTop、singleTask和singleInstance。 二、启动模式的分类 1、standard:标准模式 这种启动模式为标准模式,也是默认模式。每当我们启动一个Activity,系统就会相应的创建一个实例,不管这个实例是否已经存在。这种模式,一个栈中可以有多个实例,每个实例也都有自己的任务栈。而且是谁启动了此Activity,那么这个Activity就运行在启动它的Activity所在的栈中。 Manifest中配置: 对于标准模式,android:launchMode=”standard”可以不写,因为默认就是standard模式。 <activity android:name=".StandardActivity" android

android onNewIntent

China☆狼群 提交于 2019-11-29 14:46:46
pendingIntent字面意义:等待的,未决定的Intent。   pendingIntent对象,使用方法类的静态方法 :       getActivity(Context, int, Intent, int) -------> 跳转到一个activity组件、      getBroadcast(Context, int, Intent, int)------>打开一个广播组件     getService(Context, int, Intent, int) --------> 打开一个服务组件。   分别对应着Intent的3个行为和参数有4个,比较重要的事第三个和第一个,其次是第四个和第二个。可以看到,要得到这个对象,必须传入一个Intent作为参数,必须有context作为参数。   pendingIntent是一种特殊的Intent。主要的区别在于Intent的执行立刻的,而pendingIntent的执行不是立刻的。pendingIntent执行的操作实质上是参数传进来的Intent的操作,但是使用pendingIntent的目的在于它所包含的Intent的操作的执行是需要满足某些条件的。 主要的使用的地方和例子:通知Notificatio的发送,短消息SmsManager的发送和警报器AlarmManager的执行等等。 intent英文意思是意图

Activity启动模式-任务栈

时光怂恿深爱的人放手 提交于 2019-11-29 13:05:29
Activity启动模式设置: <activity android:name=".MainActivity" android:launchMode="standard" /> Activity的四种启动模式: 1. standard 模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。 2. singleTop 如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例)。 3. singleTask 如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。 4. singleInstance 在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例。一旦该模式的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。 来源: oschina 链接: https://my.oschina.net/u/1246663/blog/202272

Activity的四种启动模式

牧云@^-^@ 提交于 2019-11-29 11:41:42
活动的启动模式对你来说应该是个全新的概念, 在实际项目中我们应该根据特定的需求 为每个活动指定恰当的启动模式。启动模式一共有四种,分别是 standard、singleTop、 singleTask 和 singleInstance,可以在 AndroidManifest.xml 中通过给标签指定 android:launchMode属性来选择启动模式。 模式一:standard standard 是活动默认的启动模式,在不进行显式指定的情况下,所有活动都会自动使用 这种启动模式。因此,到目前为止我们写过的所有活动都是使用的 standard模式。经过上一 节的学习,你已经知道了 Android 是使用返回栈来管理活动的,在 standard 模式(即默认情 况)下,每当启动一个新的活动,它就会在返回栈中入栈,并处于栈顶的位置。对于使用 standard 模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建 该活动的一个新的实例。 @Override protected void onCreate (Bundle savedInstanceState) { super .onCreate(savedInstanceState); Log.d( "FirstActivity" , this .toString()); requestWindowFeature

Task和Activity相关

别等时光非礼了梦想. 提交于 2019-11-29 09:23:57
Task和Activity相关 这段时间在做一个项目,发现对Task和Activity掌握的还是不牢固。把相关知识整理在这里,方便查阅,有几个Flag没看明白啥意思,也没测试出来效果如何。。。 http://www.cnblogs.com/xirihanlin/archive/2010/06/03/1750811.html android:allowTaskReparenting 用来标记Activity能否从启动的Task移动到有着affinity的Task(当这个Task进入到前台时)——“true”,表示能移动,“false”,表示它必须呆在启动时呆在的那个Task里。 如果这个特性没有被设定,设定到<application>元素上的allowTaskReparenting特性的值会应用到Activity上。默认值为“false”。 一般来说,当Activity启动后,它就与启动它的Task关联,并且在那里耗尽它的整个生命周期。当当前的Task不再显示时,你可以使用这个特性来 强制Activity移动到有着affinity的Task中。典型用法是:把一个应用程序的Activity移到另一个应用程序的主Task中。 例如,如果e-mail中包含一个web页的链接,点击它就会启动一个Activity来显示这个页面。这个Activity是由Browser应用程序 定义的,但是

Android四大组件之Service

寵の児 提交于 2019-11-28 19:37:38
前言 Hi,大家好,上一期我们讲了如何使用BroadcastReceiver,这一期我们讲解Android四大组件之Service相关知识。每天一篇技术干货,每天我们一起进步。 耐心专注不仅仅是美德,更是一笔财富。 1.简介与定义 简介 Service 是一个可以在后台执行长时间运行操作而不提供用户界面的应用组件。Service可由其他应用组件启动,而且即使用户切换到其他应用,Service仍将在后台继续运行。 此外,组件可以绑定到Service,以与之进行交互,甚至是执行进程间通信 (IPC)。 例如,Service可以处理网络事务、播放音乐,执行文件 I/O 或与内容提供程序交互,而所有这一切均可在后台进行。 定义 Service 是一个专门在后台处理长时间任务的 Android 组件。 1. Service 不是一个单独的进程; 2. Service 也不是一个单独的线程; 3. Service 是一个单独的Android组件,Service运行在主线程上,如果想在Service中处理很占时间的操作时,必须在Service中开线程,以降低Activity没有响应的风险; 4. Service 不提供用户界面; 它有两种启动方式: startService 和 bindService 。 2.用途 Service有三个常见用途。 1.功能调度:Service接收指定的广播信息

Android四大组件之Activity

自古美人都是妖i 提交于 2019-11-28 19:29:31
前言 Hi,大家好,又见面啦,上一期我们讲了如何安装AS,是不是已经有小伙伴迫不及待的创建了自己的项目并开始尝试了呢?那么这一期我们主要为大家介绍Activity。作为Android的四大组件之一,Activity占据着非常重要的作用。本文将围绕Android的生命周期、启动模式、基本配置等方面进行介绍。 简介 应用程序的每一个界面都是一个Activity,所以也有人称其为视图界面。从字面的意思去理解,Activity具有活动的意思,我们在应用中进行的操作都是集中在Activity上面完成,例如拨号、拍照、发送email、看地图。每一个activity被给设置到一个窗口,在上面可以绘制交互界面。 一个应用程序通常由多个activities组成,他们通常是松耦合关系,通常一个应用程序包含有一个主Activity,即点击桌面图标的时候首先进入的Activity。 Android创建与启动 以一个简单的Activity的创建与使用示说明: 创建 在Androd Studio 新建项目完成后,会自动创建一个 Java 文件,这个文件就是 Activity,因为它继承系统 framework 层提供的 Activity,这里 AppCompatActivity 是 Activity 的子类,我们的 MainActivity 间接继承 Activity。 并且你会看到 MainActivity

Android中Activity启动模式详解

老子叫甜甜 提交于 2019-11-28 14:03:04
Android中Activity启动模式详解   在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动模式决定了Activity的启动运行方式。   Android总Activity的启动模式分为四种: Activity启动模式设置: <activity android:name= " .MainActivity " android:launchMode= " standard " /> Activity的四种启动模式: 1 . standard 模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。 2 . singleTop 如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例)。 3 . singleTask 如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。 4 . singleInstance 在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例