1、Activity面试题
1、Activity是什么
Activity是四大组件之一,它提供一个界面让用户点击和各种滑动操作,这就是Activity
2、Activity四种状态
runing
paused
stopped
killed
3、Activity生命周期
onCreate()
onStart()
本文主要介绍Activity的启动过程和过程中主要涉及的类。如果你跟随上一篇文章,成功编译了Android源码,可以动手跟本篇文章一步一步调试分析整个启动过程。没有编译源码,也可以看看android.googlesource,这里也有源码。
android是基于Linux系统的,而在linux中,所有的进程都是由init进程直接或者是间接fork出来的,zygote 进程也不例外。
每一个App其实都是
- 一个单独的dalvik虚拟机
- 一个单独的进程
Android系统开启新进程的方式,是通过fork第一个zygote 进程实现的。所以说,除了第一个zygote进程,其他应用所在的进程都是zygote的子进程。
本文转载自博文:Android系统篇之—-免root实现Hook系统服务拦截方法,结合最新开源的滴滴插件化方案 VirtualApk 对hook系统服务进行分析。
360之前开源了一款插件框架 Droid Plugin。与滴滴同一天,360又开源了一款插件框架 RePlugin。
有关新闻介绍在这里:https://www.itcodemonkey.com/article/278.html
https://www.itcodemonkey.com/article/277.html
关于360两款插件框架有什么不同,可以查看RePlugin里的readme
本文简单结合VirtualApk源码来记录实现hook系统服务方法。
最近在学习Android非侵入Hook机制,
6月30日,360开源RePlugin,安卓进入“全面插件化”时代:https://www.itcodemonkey.com/article/278.html
同一天,滴滴开源Android端插件化框架VirtualAPK:https://www.itcodemonkey.com/article/277.html
然后本人发现竟然可以不在清单文件中注册就可以启动Activity,还有这种操作?哈哈。后面会有单独的文章介绍这种骚操作。
在搜索中发现了这篇博客,
Android系统篇之—-Binder机制和远程服务调用机制分析。本文大部分转载自原来博客,结合自己的分析,是研究Hook机制前的知识储备。
简单介绍,跨进程调用一个远程服务需要下面这几步:
原文来自:http://www.mopri.de/2010/timertask-bad-do-it-the-android-way-use-a-handler/
作者文中提到,使用TimerTask更新GUI,debug看起来可以,但实际上根本不起作用。
同时作者发现,使用handler可以得到更好的表现。
下面是一个例子,使用handler在100ms后启动一个Runnable:private Handler handler = new Handler();
handler.postDelayed(runnable, 100);
下面代码里有一个小技巧,实现每隔100ms运行一次Runnable,就像TimerTask的scheduleAtFixedRate()方法:
“-Oriented”的涵意
◎ ”-Oriented”意味着一种信仰 。
◎ ”Object-oriented”相信任何软件都是
由对象所构成的,而且Nothing else 。
”-Driven”的涵意; 例如:Model-driven、Use Case-driven
– 其实”-driven”是”引导”,而不是大家常说的”驱动”。
– 就向北极星引导我们,指出方向而已。也像汽车司机(Driver)只是引导汽车方向,并没有去驱动汽车;而是引擎才是驱动汽车。
“-Centered”的涵意; 例如:Architecture-centered、 Architecture-centeric
–一切软件开发的活动都围绕着架构,就像盛诞节的糖果和礼物都挂在圣诞树上一样。
• 所谓「卡榫(Hook)」,就是用来接合两个东西的接口。如果两个东西于不同时间出现,则一方会预留虚空,给予另一边于未来时刻能以实体来填补该空间,两者虚实相依,就密合起来了。设计优良的卡榫,可以让实体易于新陈代谢、抽换自如(Plug and Play, 俗称PnP)。