安卓学习知识点汇总

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

知识点描述
Android 操作系统是一个软件组件的栈,在架构图中它大致可以分为五个部分和四个主要层。 (kernel+libraries+Framwork+application)
1,ARM硬件声音通道是直接怼到音效芯片,然后由MCU芯片的I2C去控制音效芯片切换接通的声音来源模
块2,声音来源模块可不止只有ARM,还有比如说Aux_in(DVD视频输入)、Radio(收音机声音输入)、手机互 联、蓝牙等独立硬件芯片是直接把声音输入到音效芯片,只不过是由MCU去控制音效芯片切换到哪个声音 来源模块,音效芯片就像是一个单刀多掷开关,怼到谁就出谁的声音; 3,声音的切换包括两种:对于声音来源模块的切换是硬件通道的切换,而ARM安卓系统里的声音切换是软 件通道的切换,ARM的声音只是硬件声音通道的一个而已;
2,即当系统存在“未经你许可”时销毁了我们的activity的可能时,则onSaveInstanceState()会被系统调用,这是 系统的责任,因为它必须要提供一个机会让你保存你的数据(当然你不保存那就随便你了)。如果调用,调 用将发生在onPause()或onStop()方法之前。(虽然测试时发现多数在onPause()前)

10 activity四种启动模式
11
Android应用程序启 动过程源代码分析
12 13 14 15 16 17 18 19 20
14
11
11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
11 11 11 11 11 11 11 11 11 11 11
备注
(2)用户在你的app里面执行启动一个新的activity的操作,当前activity会在第二个activity被创建后stop。 如果用户点击back按钮,第一个activtiy会被重启。
9,当你的Activity是因为用户点击Back按钮或者是activity通过调用finish()结束自己时,系统就丢失了Activity 实例这个概念,因为前面的行为意味着不再需要这个activity了。然而,如果因为系统资源紧张而导致 Activity的Destory, 系统会在用户回到这个Activity时有这个Activity存在过的记录,系统会使用那些保存的记 录数据(描述了当Activity被Destory时的状态)来重新创建一个新的Activity实例。那些被系统用来恢复之前 状态而保存的数据被叫做 “instance state” ,它是一些存放在Bundle对象中的key-value pairs。 10,默认情况下, 系统使用 Bundle 实例来保存每一个视图对象中的信息(例如输入EditText 中的文本内容)。 因此,如果你的Activity被destroyed与recreated, 那么layout的状态信息会自动恢复到之前的状态。然而,你 的activity也许存在更多你想要恢复的状态信息,例如记录用户Progress的成员变量(member variables)。
4,然而,一旦之前的activity被完全阻塞并不可见
5,当你的activity进入paused状态,系统会调用你的activity中的onPause()方法, 在这个方法里面可以允许你 执行停止目前正在运行任务的操作,比如暂停视频播放或者是保存那些有可能需要长期保存的信息。如果用 户从暂停状态回到你的activity,系统应该恢复那些数据并执行onResume()方法。
1,Activity的 onSaveInstanceState() 和 onRestoreInstanceState()并不是生命周期方法,它们不同于 onCreate() 、onPause()等生命周期方法,它们并不一定会被触发。当应用遇到意外情况(如:内存不足、用户直接按 Home键)由系统销毁一个Activity时,onSaveInstanceState() 会被调用。但是当用户主动去销毁一个Activity 时,例如在应用中按返回键,onSaveInstanceState()就不会被调用。因为在这种情况下,用户的行为决定了 不需要保存Activity的状态。通常onSaveInstanceState()只适合用于保存一些临时性的状态,而onPause()适合 用于数据的持久化保存。
6,当用户从Paused状态恢复你的activity时,系统会调用onResume()方法。
7,请注意,系统每次调用这个方法时,activity都处于最前台,包括第一次创建的时候。所以,你应该实现 onResume()来初始化那些你在onPause方法里面释放掉的组件,并执行那些activity每次进入Resumed state 都需要的初始化动作 (例如开始动画与初始化那些只有在获取用户焦点时才需要的组件)
activity有四种启动模式,分别为standard,singleTop,singleTask,singleInstance。
在Android系统中,应用程序是由Launcher启动起来的,其实,Launcher本身也是一个应用程序,其它的应 用程序安装后,就会Launcher的界面上出现一个相应的图标,点击这个图标时,Launcher就会对应的应用程 序启动起来
序号
模块
1
Andriod
2
声音控制
3
蓝牙
4
Activity生命周期(启 动与销毁)
5பைடு நூலகம்
Activity生命周期(暂 停与恢复)
6
Activity生命周期(停 止与重启)
7
Activity生命周期(重 建)
8
InstanceState
8
InstanceState
Application,Task和
9
Process的区别与联
3,如果需要保存额外的数据时, 就需要覆写onSaveInstanceState()方法。大家需要注意的是: onSaveInstanceState()方法只适合保存瞬态数据, 比如UI控件的状态, 成员变量的值等,而不应该用来保存持 久1, 化ta数sk是据在,程持序久运化行数时据,应只该针当对用a户ct离ivi开ty的当概前念的。ac说tiv白ity了时,,t在asko是nP一au组se相() 互中关保联存的(a比ct如ivi将ty的数集据合保,存它到是数存据在库于 framework层的一个概念,控制界面的跳转和返回。这个task存在于一个称为back stack的数据结构中,也就 是说,framework是以栈的形式管理用户开启的activity。这个栈的基本行为是,当用户在多个activity之间跳 转时,执行压栈操作,当用户按返回键时,执行出栈操作。举例来说,如果应用程序中存在A,B,C三个 activity,当用户在Launcher或Home Screen点击应用程序图标时,启动主Activity A,接着A开启B,B开启 C,这时栈中有三个Activity,并且这三个Activity默认在同一个任务(task)中,当用户按返回时,弹出C, 栈中只剩A和B,再按返回键,弹出B,栈中只剩A,再继续按返回键,弹出A,任务被移除. 2, task是可以跨应用的,这正是task存在的一个重要原因。有的Activity,虽然不在同一个app中,但为了保 持3, 用Ta户sk是操一作个的存连在贯于性F,ra把m他ew们or放k层在的同概一念个,任容务易中与。它混淆的有Application(应用)和Process(进程)。 application是由四大组件组成的,task是控制界面的跳转和返回,process一般翻译成进程,进程是操作系统内 核中的一个概念,表示直接受内核调度的执行单位, 在默认情况下,一个应用程序的所有组件运行在同一 个对进Ta程sk进中行。整体调度包括以下操作: 1,按Home键,将之前的任务切换到后台 2,长按Home键,会显示出最近执行过的任务列表 3,在Launcher或HomeScreen点击app图标,开启一个新任务,或者是将已有的任务调度到前台 4,启动singleTask模式的Activity时,会在系统中搜寻是否已经存在一个合适的任务,若存在,则会将这个任 务调度到前台以重用这个任务。如果这个任务中已经存在一个要启动的Activity的实例,则清除这个实例之 上的所有Activity,将这个实例显示给用户。如果这个已存在的任务中不存在一个要启动的Activity的实例, 则在这个任务的顶端启动一个实例。若这个任务不存在,则会启动一个新的任务,在这个新的任务中启动这 个singleTask模式的Activity的一个实例。 5,启动singleInstance的Activity时,会在系统中搜寻是否已经存在一个这个Activity的实例,如果存在,会将这 个实例所在的任务调度到前台,重用这个Activity的实例(该任务中只有这一个Activity),如果不存在,会 开我启们一在个操新作任软务件, 的并过在程这中个,新一任定务会中涉启及动界这面个的s跳in转gle。In其sta实n在ce对模界式面的进Ac行tiv跳ity转的时一,个A实n例dro。id Framework既能在 同一个任务中对Activity进行调度,也能以Task为单位进行整体调度。在启动模式为standard或singleTop时, 一般是在同一个任务中对Activity进行调度,而在启动模式为singleTask或singleInstance是,一般会对Task进 行整体调度。
3,在使用通常的app时,前端的activity有时候会被其他可见的组件而阻塞(obstructed),这样会导致当前的 activity进入Pause状态。例如,当打开一个半透明的activity时(例如以对话框的形式),之前的activity会被暂 停。 只要这个activity仍然被部分可见,之前的activity则一直处于Paused状态。
8,恰当的停止与重启你的activity是很重要的,在activity生命周期中,他们能确保用户感知到程序的存在并 不会丢失他们的进度。在下面一些关键的场景中会涉及到停止与重启:
(1)用户打开最近使用app的菜单并切换你的app到另外一个app,这个时候你的app是被停止的。如果用 户通过手机主界面的启动程序图标或者最近使用程序的窗口回到你的app,那么你的activity会重启。
检测用户是否开启了蓝牙——开启蓝牙——扫描蓝牙设备——选择设备连接——发现服务——注册特征码— —断开连接,我们就参考这张图,按照响应的顺序来说一下整个蓝牙设备流程的流程方法
1,在一个activity的生命周期中,系统会像金字塔模型一样去调用一系列的生命周期回调方法。Activity生命 周期的每一个阶段就像金字塔中的台阶。当系统创建了一个新的activity实例,每一个回调函数会向上一阶的 移动activity状态。金字塔顶端意味着activity是跑在最前端的并且用户可以与它进行交互。 2,当用户开始离开这个activity,为了卸载这个activity,系统会调用其它方法来向下一阶移动activity状态。 在某些情况下,activity会隐藏在金字塔下等待(例如当用户切换到其他app),这个时候activity可以重新回到顶 端(如果用户回到这个activity)并且恢复用户离开时的状态。
相关文档
最新文档