我心飞翔_666

我心飞翔_666的笔记

来自android视频教程5(1)

Manifest 解析文件的过程 1、系统启动候,PackageManagerService读取所有安装的应用程序Manifest信息,并在内存中会建立一个映射表,以供查询。2、启动应用程序的时候,Laucher进行系统级判断(比如启动一个Activity类,会查询刚才建立的那张内存映射表),比如最小SDK等3、四大组件在需要的时候实例化 第一层(<Manifest>):(属性)<manifest  xmlns:android="http://schemas.android.com/apk/res/android"          package="com.woody.test"          android:sharedUserId="string"          android:sharedUserLabel="string resource"          android:versionCode="integer"          android:versionName="string"          android:installLocation=["auto" | "internalOnly" | "preferExternal"] ></manifest>A、xmlns:android定义android命名空间,一般为http://schemas.android.com/apk/res/android,这样使得Android中各种标准属性能在文件中使用,提供了大部分元素中的数据。B、package指定本应用内java主程序包的包名,它也是一个应用进程的默认名称C、sharedUserId表明数据权限,因为默认情况下,Android给每个APK分配一个唯一的UserID,所以是默认禁止不同APK访问共享数据的。若要共享数据,第一可以采用Share Preference方法,第二种就可以采用sharedUserId了,将不同APK的sharedUserId都设为一样,则这些APK之间就可以互相共享数据了。详见:http://wallage.blog.163.com/blog/static/17389624201011010539408/D、sharedUserLabel一个共享的用户名,它只有在设置了sharedUserId属性的前提下才会有意义G、installLocation安装参数,是Android2.2中的一个新特性,installLocation有三个值可以选择:internalOnly、auto、preferExternal选择preferExternal,系统会优先考虑将APK安装到SD卡上(当然最终用户可以选择为内部ROM存储上,如果SD存储已满,也会安装到内部存储上)选择auto,系统将会根据存储空间自己去适应选择internalOnly是指必须安装到内部才能运行(注:需要进行后台类监控的APP最好安装在内部,而一些较大的游戏APP最好安装在SD卡上。现默认为安装在内部,如果把APP安装在SD卡上,首先得设置你的level为8,并且要配置android:installLocation这个参数的属性为preferExternal)

来自android视频教程4(0)

Android进程等级(5个等级)前台进程(Forground service)、Visible、service、background、empty 1、Foreground process:优先级别最高(1)正处于onResume状态(2)正处于bind服务状态(3)正处于服务在前台运行状态(调用startForeground(),使其处于前台进程)(4)Service生命周期正在被执行(onCreate、onStart、onDestroy)(5) Receiver正在执行onReceive()方法2、Visible Process  当前的Activity不是最前端,但是还是可以看到过,比如弹出一个对话框或者输入法3、Service Process正在运行的,不在上述两种状态的Service4、background process如按home键,应用常驻在内存中5、empty process 没有任何Compoents的进程,保留这个进程主要是为了缓存需要。 Android进程是如何启动的?通过远程服务,packageService ,然后通过PackageManager  

来自android视频教程7(0)

什么时候用OnSaveInstanceState在系统回收当前Activity之前会调用onSaveInstanceState,按back键此方法不会调用,按Home键会调用。    onSaveInstanceState()方法只适合保存瞬态数据, 比如UI控件的状态, 成员变量的值等,而不应该用来保存持久化数据,持久化数据应该当用户离开当前的activity时,在onPause()中保存(比如将数据保存到数据库或文件中)。说到这里,还要说一点的就是在onPause()中不适合用来保存比较费时的数据,所以这点要理解。

来自android视频教程8(0)

Android系统启动过程1、开机开始:Linux内核启动:bootloader、Linux kernel(如驱动的加载)2、Android系统启动Init.rc启动文件(入口启动文件)1) /system/bin/Servicemanager(守护进程,与界面无关,会持续运行在后台,用来接受响应),启动这个守护进程会早于davlik虚拟机之前2) 会启动zygote进程(孵化davlink 虚拟机)3)启动Laucher 3、应用程序是如何启动

来自android视频教程9(0)

Android应用程序启动过程:Laucher(Laucher.java)Laucher和 ACTION_BOOT_COMPLETED谁在后? Laucher在前,ACTION_BOOT_COMPLETED 在后

来自android视频教程10(0)

一个Activity构造 的时候一定会构造一个Windw(PhoneWindow)并且只有1个,并且这个窗户有一个ViewRoot(View或者ViewGroup),然后addView.WindowManagerService接收信息,并且回调Activity函数 Activity是控制单元window 是模型View 真正的显示试图 

来自android视频教程14(0)

  消息的发送实现异步,这个又讲错了,也就是 采用handler.post (Runnable),没有开启一个新的线程,实际上还是同步。 Android中异步实现方法:1) 继承Thread2) 实现Runnable接口3)Handler4)AsyncTask