当前位置: 首页 > news >正文

门户网站建设工作领导小组四川省建设局网站

门户网站建设工作领导小组,四川省建设局网站,网络安全哪个培训班比较好,电商分享推广怎么做文章目录 Activity一个APP的启动过程基本概念总图zygote是什么#xff1f;有什么作用#xff1f;SystemServer是什么#xff1f;有什么用#xff0c;与zygote的关系是什么#xff1f;为什么称为服务端对象#xff1f;APP、AMS、zygote是三个独立的进程#xff0c;他们之… 文章目录 Activity一个APP的启动过程基本概念总图zygote是什么有什么作用SystemServer是什么有什么用与zygote的关系是什么为什么称为服务端对象APP、AMS、zygote是三个独立的进程他们之间如何通信呢(IPC通信方式)Launcher是什么什么时候启动的Instrumentation是什么和ActivityThread是什么关系ActivityStack和ActivityRecord是什么关系?一个APP的程序入口是什么APP的主线程消息循环在哪里创建? Activity的生命周期如果在一个Activity中启动另外一个Activity执行过程是怎么样的 Activity的启动方法IntentFilter匹配规则Activity的四种启动模式造成Activity卡顿的原因及解决方法 FragmentFragment生命周期Fragment生命周期与Activity生命周期对比 Activity 一个APP的启动过程 基本概念 ActivityManagerServices简称AMS服务端对象负责系统中所有Activity的生命周期。ActivityThreadApp的真正入口。当开启App之后会调用main()开始运行开启消息循环队列这就是UI线程或者叫主线程。与ActivityManagerServices配合一起完成Activity的管理工作。ApplicationThread用来实现ActivityManagerService与ActivityThread之间的交互。在ActivityManagerService需要管理相关Application中的Activity的生命周期时通过ApplicationThread的代理对象与ActivityThread通讯。ApplicationThreadProxy是ApplicationThread在服务器端的代理负责和客户端的ApplicationThread通讯。AMS就是通过该代理与ActivityThread进行通信的。Instrumentation每一个应用程序只有一个Instrumentation对象每个Activity内都有一个对该对象的引用。Instrumentation可以理解为应用进程的管家ActivityThread要创建或暂停某个Activity时都需要通过Instrumentation来进行具体的操作。ActivityStackActivity在AMS的栈管理用来记录已经启动的Activity的先后关系状态信息等。通过ActivityStack决定是否需要启动新的进程。ActivityRecordActivityStack的管理对象每个Activity在AMS对应一ActivityRecord来记录Activity的状态以及其他的管理信息。其实就是服务器端的Activity对象的映像。TaskRecordAMS抽象出来的一个“任务”的概念是记录ActivityRecord的栈一个“Task”包含若干个ActivityRecord。AMS用TaskRecord确保Activity启动和退出的顺序。如果你清楚Activity的4种launchMode那么对这个概念应该不陌生。 总图 zygote是什么有什么作用 fork是Unix/Linux操作系统中的一个用于创建新进程的系统调用函数fork会复制原进程的所有内容包括代码、数据和内存空间。 zygote直译为受精卵zygote 是一个进程的名字Android是基于Linux系统的当手机开机后Linux内核加载完成之后就会启动一个init 的进程在Linux系统中所有的的进程都是init进程fork出来的zygote进程也不例外。 每一个APP其实都是 一个单独的dalvik虚拟机一个单独的进程 当系统里边的第一个zygote进程运行之后开启APP就相当于新开启一个进程而为了实现资源共用和更快的启动速度Android系统开启新进程的方式是通过fork一个zygote进程实现的。就像受精卵这种有遗传物质的细胞一样快速进行分裂。 SystemServer是什么有什么用与zygote的关系是什么为什么称为服务端对象 zygote进程后开启后会执行startSystemServer()fork出SystemServer进程 SystemServer是Android Framework中除zygote外另一个十分重要的线程系统里边的重要服务ActivityManagerService、PackageManagerService、WindowManagerService都在这个线程中开启。 服务端/客户端模型不仅仅存在于Web开发中在Android框架设计中也是这种模式服务端是所有APP共有的系统服务比如上边提到到AMS活动管理服务、PMS包管理服务、WMS窗口管理服务而客户端指的就是Android系统上的各种APP当某个APP要实现某个操作需要告诉这些系统服务例如如果想要打开一个App最终是由AMS通知zygote进程来fork一个新进程进而开启目标APP的。 APP、AMS、zygote是三个独立的进程他们之间如何通信呢(IPC通信方式) APP与AMS通过Binder进行IPC通信AMS与zygote通过Socket进行IPC通信。 APP与AMS之间的通信 APP相当于客户端AMS相当于服务端Binder通信的单向的; 具体实现时采用了代理模式ActivityManagerProxy作为AMS在客户端的代理人接收客户端的请求参数通过Binder驱动传输到服务器的AMS实际执行请求。 ApplicationThreadProxy作为APP在服务端的代理人 客户端 ActivityManagerProxy -----Binder驱动----ActivityManagerService服务器 客户端ApplicationThread ------Binder驱动 ------ ApplicationThreadProxy服务器 Launcher是什么什么时候启动的 当我们点击手机桌面上的图标时App就由Launcher开始启动Launcher本质上也是一个应用程序和我们的App一样也是继承自ActivityLauncher实现了点击、长按等回调接口来接收用户的输入。Launcher中开启一个App其实和我们在Activity中直接startActivity()基本一样都是调用了Activity.startActivityForResult()。 Instrumentation是什么和ActivityThread是什么关系 每个Activity都持有Instrumentation对象的一个引用但是整个进程只会存在一个Instrumentation对象。Instrumentation翻译为“仪器/手段”Instrumentation对象包含有很多与Activity生命周期相关的方法它就像是应用进程的管家。 ActivityThread是APP运行的主线程也是UI线程AMS对于Activity的调度信息会通过Binder通信传给 ActivityThread而ActivityThread是委托Instrumentation来实际执行对Activity生命周期的控制。 ActivityStack和ActivityRecord是什么关系? 每个Activity在AMS对应一个ActivityRecord对象包含了Activity的状态和管理信息是Activity实体在AMS的映像。 ActivityStack是Activity在AMS的栈管理ActivityStack中存放的对象就是ActivityRecord。 一个APP的程序入口是什么APP的主线程消息循环在哪里创建? APP的程序入口是ActivityThread.main() 整个APP的主线程消息循环在ActivityThread初始化时就已经创建好了消息循环所以在主线程里边创建Handler不需要执行Looper而如果在其他线程里边使用Handler则需要单独使用Looper.prepare()和Looper.loop()创建消息循环。 Activity的生命周期 onCreate()-onStart()-onResume()-onPause()-onStop()-onDestroy() 如果在一个Activity中启动另外一个Activity执行过程是怎么样的 ()中的参数1、2表示Activity的标识。 onCreate(1)-onStart(1)-onRusume(1)-onPause(1)-onCreate(2)-onStart(2)-onRusume(2)-onStop(1)-在Activity2中返回-onPause(2)-onStart(1)-onResume(1)-onStop(2)-onDestroy(2) Activity的启动方法 显示启动; // 1. 使用intent的构造函数 指明context和待启动的activity的class对象。 Intent intent new Intent(this, SecondActivity.class); startActivity(intent); // 2. 使用 setClassName传入 包名类名 / 包Context类名 Intent intent new Intent(); // 方式1包名类名 // 参数1 包名称 // 参数2 要启动的类的全限定名称 intent.setClassName(“com.hc.hctest”, “com.hc.hctest.SecondActivity”); // 方式2包Context类名 // 参数1 包Context可直接传入Activity // 参数2 要启动的类的全限定名称 intent.setClassName(this, “com.hc.hctest.SecondActivity”); startActivity(intent); // 3. 通过ComponentName传入 包名 类全名 Intent intent new Intent(); // 参数1 包名称 // 参数2 要启动的类的全限定名称 ComponentName cn new ComponentName(“com.hc.hctest”, “com.hc.hctest.SecondActivity”); intent.setComponent(cn); startActivity(intent); 隐式启动通过设置Intent的Action动作、 Category类别和data数据构建一个隐式意图在manifest.xml已经注册的组件中按照Intent过滤规则匹配到相应的组件。 IntentFilter匹配规则 总体匹配规则只有Action、Category和Data同时匹配才能成功启动Activity。 1个Activity可以有多个Intent-filter一个Intent只要能匹配任何一组intent-filter就可以成功启动对应的activity。 Activity的四种启动模式 标准模式Standard栈顶复用模式SingleTop栈内复用模式SingleTask单例模式SingleInstance 启动模式的设置方式 manifest.xml中指定launchMode activityandroid:launchMode启动模式 //属性 //standard标准模式 //singleTop栈顶复用模式 //singleTask栈内复用模式 //singleInstance单例模式 //如不设置Activity的启动模式默认为**标准模式standard** /activity 通过Intent设置标志位 Intent inten new Intent (ActivityA.this,ActivityB.class); intent,addFlags(Intent,FLAG_ACTIVITY_NEW_TASK); startActivity(intent);两种方式设置的区别; 优先级不同 Intent设置方式的优先级 Manifest设置方式即 以前者为准限定范围不同 Manifest设置方式无法设定 FLAG_ACTIVITY_CLEAR_TOPIntent设置方式 无法设置单例模式SingleInstance 造成Activity卡顿的原因及解决方法 Fragment Fragment生命周期 Fragment 类的代码与 Activity 非常相似。它包含与 Activity 类似的回调方法如 onCreate()、onStart()、onResume()、onPause() 、 onStop()、onDestroy()。 Fragment依附Attach于Activity的生命周期而存在。在Activity的onCreate()我们需要执行Fragment的onAttach()、onCreate()、onCreateView()、onActivityCreated()。 Fragment自己独有的生命周期onAttach、onCreateView、onActivityCreated、onDestroyView、onDetach(). Fragment生命周期与Activity生命周期对比
http://www.hkea.cn/news/14452678/

相关文章:

  • 网站建设服务 行业代码在线做图软件
  • 开封建网站呼叫中心网站建设
  • 网站建设logo图片汕头珠宝网站建设
  • 下载了网站模板怎么用西峰住房和城乡建设局网站
  • 公共网站怎地做wordpress is电影主题
  • asp网站发布ftp江苏苏州
  • 工信部网站域名备案查询搜索引擎的工作原理分为
  • 扬州做网站公司关于化妆品网站成功案例
  • 职高网站建设例题做艺术教育类网站如何申请
  • 雄安优秀网站建设哪家好网站建设分为哪几部分
  • 服务器如何搭建网站wordpress换空间要改
  • 贵阳网页网站制作网站空间维护
  • 制作一个网站的步骤是什么腾龙官方网站做号软件
  • 景区网站怎么做梁朝伟做汤唯视频网站
  • 做婚恋网站赚钱吗校园网站的建设与管理
  • 做视频网站视频用什么插件wordpress 引用页面
  • 如何选择做网站公司网站运营怎样做
  • 关于水果的网站建设企业在公司做的网站遇到的问题
  • 游戏网站怎么做seo公司网站开发费用计入什么科目
  • 做网站的硬件成本外贸网站 在线留言
  • 网站通栏广告代码中核集团为什么排央企第一名
  • 做网站建设网站制作上海沪港建设咨询有限公司网站
  • 做网站论坛帝国cms仿站工具
  • 中国优秀企业网站欣赏优秀的网站建设公司
  • 西安做网站商城的公司wordpress4.0+中文
  • 内蒙古自治区生态文明建设网站单页淘宝客网站
  • 建一个网站多少钱?本地58同城招聘网
  • 做网站运营需要具备哪些能力怎么做一个小程序app
  • 苏州网站建设搜q479185700wordpress外网访问错误
  • 河北网站建设seo优化制作设计网站备案密码查询