activity启动模式

Activity的启动流程分析

匆匆过客 提交于 2020-04-03 10:31:40
Activity是Android应用程序的四大组件之中的一个,负责管理Android应用程序的用户界面,一般一个应用程序中包括非常多个Activity,他们可能执行在一个进程中。也可能执行在不同的进程中。 我们主要通过启动在不同进程中的Activity,来分析Activity的启动流程及AMS对Activity的管理逻辑。 有两个应用程序App1和App2。在App1的Activity A中点击button 启动 App2中的Activity B。 通过分析以上ActivityB的启动过程来了解AMS对Activity的管理逻辑。 步骤1:Activity A告诉AMS服务准备启动Activity B 步骤2:AMS服务处理并通知Activity A所在的进程pause Activity A,Activity A所在的进程处理完毕之后。通知AMS服务Activity A已经完毕pause工作。 步骤3:Activity B所在的进程没有启动,AMS服务首先启动一个新的进程。新的进程启动完毕之后。通知AMS服务进程启动完毕。 步骤4:AMS服务通知新的进程来启动Activity B。新的进程启动Activity B完毕之后。通知AMS服务Activity B启动完毕。 在分析Activity启动流程之前我们先简介下应用进程和AMS服务通信方法。AMS服务和应用进程间属于不同的进程

android面试题整理

半世苍凉 提交于 2020-04-03 04:31:41
以下是整理的一些android面试题,希望对大家有用。 1. 什么是Activity? 四大组件之一,一般的,一个用户交互界面对应一个activity, activity 是Context的子类,同时实现了window.callback和keyevent.callback, 可以处理与窗体用户交互的事件. 我开发常用的的有ListActivity , PreferenceActivity 等…如果界面有共同的特点或者功能的时候,还会自己定义一个BaseActivity. 2. 请描述一下Activity生命周期。 生命周期描述的是一个类 从创建(new出来)到死亡(垃圾回收)的过程中会执行的方法.. 在这个过程中 会针对不同的生命阶段会调用不同的方法 Activity从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回调方法,这些回调方法包括:oncreate ondestroy onstop onstart onresume onpause 其实这些方法都是两两对应的,onCreate创建与onDestroy销毁; onStart可见与onStop不可见;onResume可编辑(即焦点)与onPause; 这6个方法是相对应的,那么就只剩下一个onRestart方法了,这个方法在什么时候调用呢? 答案就是:在Activity被onStop后,但是没有被onDestroy

Android Activity四种加载方式

我与影子孤独终老i 提交于 2020-04-01 13:07:52
1 概述 Android中的Activity共有四种加载方式,可以在AndroidManifest.xml中对应的activity的android:launchMode中指定,四种方式如下: standrad singleTop singleTask singleInstance 其中,standard是默认的加载方式,singleTop是栈顶单例模式,singleTask是Task内单例模式,singleInstance是全局单例模式,下面一一进行说明. 2 standard standard是默认模式,每次通过这种模式启动时,都会为Activity创建一个新的实例,并将这个新的实例添加到栈顶,每次按返回键就会一直出栈,处于栈顶的实例就算用户看到的界面. 下面测试一下,新建一个Activity与一个Intent,加上一个Button与startActivity: 加上调试信息以及设置好logcat过滤后,测试: 可以看到每次点击按钮都是一个新的实例,置于Task栈顶,示意图如下: 然后,每次返回,栈顶的Activity出栈,直到栈为空. 3 singleTop singleTop允许一个Activity实例化多个对象,与standard唯一的不同就算,当将要启动的Activity位于栈顶时,不会创建新的实例,而是直接复用已有实例. 另外,如果要启动的Activity没有位于栈顶

android onNewIntent

为君一笑 提交于 2020-03-27 10:19:56
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英文意思是意图

AndroidManifest.xml文件详解(activity)(二)

允我心安 提交于 2020-03-25 08:45:39
android:configChanges 这个属性列出了那些需要 Activity 进行自我处理的配置变化。当在运行时配置变化发生的时候,默认情况下,这个 Activity 会被关掉并重启,但是用这个属性声明一个配置,就会阻止 Activity 被重启。相反,这个 Activity 会保持运行,并且它的 onConfigurationChanged() 方法会被调用。 注意:应该避免使用这个属性,并且只把它作为最后的手段来使用。有关如何正确处理配置改变期间的重启,请阅读“处理运行是变化”( http://blog.csdn.net/fireofstar/article/details/7456363 ) 下表中列出了这个属性的有效值,要设置多个值的时候,用“ | ”符号连接,例如: “ locale|navigation|orientation ” 值 说明 mcc IMSI 移动国家编码改变时要进行自我处理 --- 系统发现了一个新的 SIM 卡,并且更新了 MCC 。 mnc IMSI 移动网络编码改变时要进行自我处理 --- 系统发现了一个新的 SIM 卡,并且更新了 MNC locale 语言环境发生变化时要进行自我处理 --- 用户选择了一种用于显示文本的新语言。 touchscreen 触屏发生变化时要进行自我处理。(这种情况通常不会发生) keyboard

Intent详解

不羁的心 提交于 2020-03-24 00:24:22
1、什么是Intent Android提供了Intent机制来协助应用建的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity,service和broadcast receiver之间的交互,intent这个词本意是“目的、意向、意图”。 Intent是一种运行时绑定(runtime binding)机制,他能在程序运行的过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或意愿,Android会根据意愿的内容选择适当的组件来响应。 对于像这三种组件发送intent有不同的机制: 使用Context.startActivity()或Activity.startActivityForResult(),传入一个intent来启动一个activity。 使用Activity.setResult(),传入一个intent来从activity中返回结果 将intent对象传给Context.startService()来启动一个service或者传消息给一个运行的service。 将intent对象传给Context.bindService()来绑定一个service。 将intent对象传给Context.sendBroadcast(),Context.sendOrderedBroadcast()

Intent详解

喜你入骨 提交于 2020-03-21 06:34:36
1、Intent的概念: Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的activity, service和broadcast receiver之间的交互。Intent这个英语单词的本意是“目的、意向、意图”。 Intent是一种运行时绑定(runtime binding)机制,它能在程序运行的过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来响应。 activity、service和broadcast receiver之间是通过Intent进行通信的,而另外一个组件Content Provider本身就是一种通信机制,不需要通过Intent。我们来看下面这个图就知道了: 如果Activity1需要和Activity2进行联系,二者不需要直接联系,而是通过Intent作为桥梁。通俗来讲,Intnet类似于中介、媒婆的角色。 2、对于向这三种组件发送intent有不同的机制: 使用Context.startActivity() 或 Activity.startActivityForResult(),传入一个intent来启动一个activity。使用 Activity.setResult()

AndroidManifest.xml文件详解(activity)(二)

旧城冷巷雨未停 提交于 2020-03-18 14:47:50
AndroidManifest.xml文件详解(activity)(二) 分类: 学习笔记 2012-05-09 08:38 746人阅读 评论 (0) 收藏 举报 android application 任务 api keyboard 语言 android:configChanges 这个属性列出了那些需要 Activity 进行自我处理的配置变化。当在运行时配置变化发生的时候,默认情况下,这个 Activity 会被关掉并重启,但是用这个属性声明一个配置,就会阻止 Activity 被重启。相反,这个 Activity 会保持运行,并且它的 onConfigurationChanged() 方法会被调用。 注意:应该避免使用这个属性,并且只把它作为最后的手段来使用。有关如何正确处理配置改变期间的重启,请阅读“处理运行是变化”( http://blog.csdn.net/fireofstar/article/details/7456363 ) 下表中列出了这个属性的有效值,要设置多个值的时候,用“ | ”符号连接,例如: “ locale|navigation|orientation ” 值 说明 mcc IMSI 移动国家编码改变时要进行自我处理 --- 系统发现了一个新的 SIM 卡,并且更新了 MCC 。 mnc IMSI 移动网络编码改变时要进行自我处理 ---

App A 唤起 App B 并传参,AppB在登录之后的页面,无论哪个页面都有一个弹窗。点击确定按钮,唤起App A (传参)

白昼怎懂夜的黑 提交于 2020-03-06 18:04:17
一 .需求:App A 唤起并传参给 App B ,AppB在登录之后的页面,无论哪个页面都有一个弹窗。点击确定按钮,唤起并传参给App A 二.思路: a:App B 创建一个Activity S.专门用来接收参数,接收到了并存在本地(唤起的接收参数:根据要跳的Activity,或者根据包名,在启动页的Activity 接收到参数)。 (1):没有登陆过,跳转引导页(请求域名,然后根据状态跳到对应页面)。 (2):登录过的话分为两种情况。 (2-1):App B 是关闭程序状态唤起,同(1)操作。 (2-2):App B 是后台状态唤起,就直接 finish(). 当前页面 Activity S。 -->上次进入后台什么页面,这次唤起就什么页面。 (2-3):后台唤起的判断(默认域名是错的地址,并且 public static 状态保存,如果之前没有完全杀死App B,那么这个值还存在): !StringUtil.isEmpty(当前域名) && !当前域名.equals("默认的错误域名") b:App A AppB (1)启动模式都是 singletask(弹出其他Activity,自己处于栈顶). (2)都是竖屏 screenorientation="potraint". (如果App A 横屏,App B 根据自己需求决定横竖屏) (3)传值唤起(采用包名

Activity组件

佐手、 提交于 2020-03-05 13:34:18
Activity 是 Android 四大组件之一; 用于绘制用户界面并响应用户操作; 一个程序会包含多个 Activity ,有一个 Activity 会被声明为 主Activity ,用户进入应用是第一个显示的就是 主Activity ; Activity 之间可以相互跳转; Activity 的定义 定义一个类继承自 Activity ,并实现基类的若干方法; 在 onCreate() 方法中调用 setContentView(View view) 方法设置布局文件; 在 AndroidManifest.xml 文件中对 Activity 进行配置,否则系统找不到定义的 Activity ; Activity 跳转 不同的 Activity 之间可以相互跳转,跳转有两种方式: 在一个 Actvity 中调用 startActivity(Intent intent) // 启动一个Activity startActivity ( Intent intent ) ; startActivityForResult(Intent intent, int requestCode) 方法跳转到另外一个 Activity . // 该方法不仅可以启动其他Athity,还可以接收其他Actvity的返回结果,requestCode标识请求的来源。 startActivityForResult