Android基础概况

M(Window)  V(View)  C(Controller)

Activity

什么是activity

1.描述一下activity的生命周期

 Here's the order of operations that occur when Activity A starts Acivity B:

1.Activity A's onPause() method executes.

2.Activity B's onCreate(), onStart(), and onResume() methods execute in sequence. (Activity B now has user focus.)

3.Then, if Activity A is no longer visible on screen, its onStop() method executes.

 

 ActivityManager启动activity

2.描述一下activityTask Stack模型

 栈(先进后出)

3.Intent是什么

4.Activity如何保持和恢复状态(当前进程被意外杀死)

  onSaveInstanceState  保持数据

  onRestoreInstanceState 该方法有时候可以不被调用,推荐使用onCreate方法

 

5.onConfigurationChanged的使用

横竖屏切换、语言切换

6.launchMode的四种模式

Ø Standard  

Ø SingleTop

当一个Activity在任务栈顶的时候,请求启动该ActivityIntent并没有触发创建该Activity的新的实例,而是触发了栈顶AcivityonNewIntent()方法

Ø SingleTask

当请求一个已经存在的Acivity时会触发已经存在的该Activity实例的onNewIntent()方法,并且如果该Activty所在的任务栈上面有其他Activity,那么其他Activity会被销毁。

Ø SingleInstance

 该Activity独立成Taskstack,并且栈里面有且仅有自己,而且始终保持一个实例。离栈时,先退当前栈,再退其他栈。

 

写一个Activity发送短信和打电话的例子

SmsManager

写一个程序,对外提供一个Activity,再写一个程序通过intentfilter来启动原来进程的Activity,类似我们启动打电话的系统Activity

 

Service

1.什么是service

Service是应用程序组件,用于后台执行较长时间的操作,不提供用户交互界面。

2.描述一下service的生命周期

3.说一下android里面有哪几种service

按启动方式分

Ø StartedService

① 通过startService()来启动

② 一旦启动,就运行在后台,即便启动它的对象Activity都销毁了

③ 通常只启动,不返回值

④ 通常网络上传或者下载,操作完成后,自动停止

⑤ onStartCommand(), IntentServiceonHandleIntent(Intent arg0)

Ø BoundService

① bindService()来绑定

② 提供客户端服务器接口来启动

③ 发送请求,得到返回值,甚至通过IPC来通讯

④ 一个服务可以被多个调用者绑定,只要有一个绑定者,服务运行,所有绑定者都退出,服务退出

⑤ onBind()

StartedServiceBoundService的区别

① StartedService和启动它的Activity不同生共死,BoundService和启动它的Activity同生共死

② 无论是start or bind,只要service没有实例化,就会执行onCreate方法。但start每次都会调用onStartCommand方法。而bind如果已经绑定,就不会再调用onBind了。

本质区别boundService其实是有一个客户端,服务器端的概念。借助于Binder来通讯。

4.Service会新开进程或者线程吗?

Service不是一个新的进程,也不是一个新的线程,是与当前进程绑定的。

5.Service和线程的使用区别

从逻辑上认为需要一个后台操作,但跟我们现在主线程操作通讯频繁,逻辑关系紧密,就用多线程;能够从逻辑上区分开来,就用后台服务。

 

Android UI

Android界面呈现机制

Android界面事件机制

Android界面事件分类

① keyEvent,

② TouchEvent

③ TrackballEvent

Android界面事件的触发及分类

1.事件分发的两种方法

① 扩展View的时候回调事件函数

② 注册事件监听

2 . 事件分发dispatchKeyEvent

² keyEvent分发

a.消息发到当前上下文

b.Context发到window

c.Window优先发给输入法窗体

d.发给rootViewDecorView

e.发给焦点View

² touchEvent分发

a.判断焦点元素

b.从下往上

Android自定义组件

Customized View

Canvas Drawable 

Compound View 

 

Android 数据存储

1.数据存储的几种方式

① Xml方式

sharedPreference

Ø public sharedPreferences getPreferences(int mode)

通过Activity对象获取,获取的是本Activity私有的Preference,保存在系统中的xml形式的文字的名称为这个Activity的名字,因此一个Activity只能有一个,属于这个Activity

Ø Public Sharedpreferences getSharedPreferences(String name, int mode)

因为继承了ContextWrapper,因此也是通过Activity对象获取,但是属于整个应用程序,可以有多个,以第一个参数的name为文件名保存在系统中。

Ø Public static SharedPreferences getDefaultSharedPreferences(Context context)

PreferenceManager的静态函数,保存PreferenceActivity中的设置,属于整个应用程序,但是只有一个,Android会根据包名和PreferenceActivity的布局文件来起一个名字保存。

② 二进制文件

③ 网络存储

④ Sqlite 

ContentProvider(观察者模式)

Ø 理解ContentProvider的作用及好处

特征:a.唯一的共享程序间数据方式;b.android没有提供公共数据区让不同的程序去共享访问。

Ø 认清ContentProvider与数据存储的关系

ContentProvider是数据存储对外提供的访问接口

Ø 掌握ContentProvider对外提供的数据模型形式

Ø 能够编写ContentResolver的增删该查

Ø 能够自定义一个ConetentProvider

Ø 了解ContentProvider的内部机制 通过binder通讯

安装apk的时候注册到ProviderManager,卸载apk时取消注册,ContentProvider接受调用的时候启动宿主程序,操作完毕后,宿主进程为empty

ContentProvider是什么

① ContentProvider是一套存储访问数据的通道,让你无需了解下面的存储细节实现数据操作及共享

② 无论具体存储是如何的,存在哪儿的,但对外提供的模型是统一的

③ 定义了ContentProvider对象,会在系统初始化的时候自动实例化,无需我们手动去实例化对象

④ 我们只需要通过ContentProvider去取和操作数据即可

 

BroadcastReceiver

用来接收系统和自定义的消息

种类:1.常规消息(Normal2.排序消息(Order

你可能感兴趣的:(thread,多线程,android)