•(掌握)意图激活新的activity在应用程序里面去添加一个新的Activity
第一步:
第二步:清单配置
基于组件的开发:Activity service receiver provider
activity:
activity是四大组件之一,用来显示控件和用户交互
activity他是一个布局容器。
•(掌握)隐式意图和显式意图
•(掌握)隐式意图uri的规则
别人怎么暴露,你就怎么激活,激活的时候要保证匹配某个intent-filter节点里面的一组:action + categroy + data
一般来说:开发中对外暴露写的很少,但是激活别人(系统里面的组件)用的很多。
•(掌握)意图数据传递
基本数据线类型
传递对象
让类去实现Serialiable或者 Parcelable接口
Serialiable
Parcelable接口
publicclass Student implements Parcelable {
public String name;
public int age;
public Student() {
super();
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student[name=" + name + ", age=" + age + "]";
}
@Override
public int describeContents() {
return 0;
}
//注意:读和写的顺序一定要一致
// 把属性写入到Parcel对象里面
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(age);
}
public static finalParcelable.Creator<Student> CREATOR = newParcelable.Creator<Student>() {
//创建一个Student对象 对象里面的属性从Parcel对象里面获取
public StudentcreateFromParcel(Parcel in) {
Student student = newStudent();
student.name =in.readString();
student.age =in.readInt();
return student;
}
public Student[] newArray(intsize) {
return newStudent[size];
}
};
}
Serializable接口是针对JVM的设计 在Dalvik效率低。
开发中都是使用Parcelable,消耗的资源少
•(掌握)通过Application来传递数据
第一步:定义应用
第二步:清单配置
第三步:传递数据
第四步:获取数据
注意:Application里面不能存在太大的数据
•(掌握)查看源码激活系统的短信发送器界面
激活新建短信界面
能过通过查看logcat日志来了解激活的是哪个组件。
打电话
setAction(Intent.Action_call)
setData(Uri.parse("tel:"));
权限
•(掌握)开启activity获取返回值
MainActivity
OtherActivity
•(了解)请求码和结果码
requestCode:请求码
唯一的标示一个请求
resultCode:结果码
唯一的标示一个结果的返回
方便于我们在执行逻辑的区分
•(掌握)activity的生命周期
生命周期:
线程 Servlet ...
开始---》过程--》结束
Activity 生命周期 android设计者
onCreate onStart onResume
onPause onStop onDestory
onRestart
生命周期进行三个分类:
1 完整的生命周期 直线
onCreate onStart onResume onPause onStop onDestory
2 可视的生命周期
onStart ---> onStop 大圈
3 前台生命周期
onResume --> onPause 小圈
上三 下三 上中
10000
1个直线 4个圈
•(了解)activity被系统回收临时数据的存储
当系统去主动杀死应用程序的时候,是需要对一些临时数据进行存储的。
模拟系统杀死Activity.
可以执行横竖屏切换,横竖屏切换 杀死activity 再创建一个Activity
快捷键:ctrl + F12
•(了解)横竖屏切换的生命周期
竖屏 --》横屏
activity先杀死 再创建
横竖--》竖屏
activity先杀死 再创建
要求横竖屏切换activity不杀死 只是做界面的改变
但是开发中如果需要没有明确要求,直接把activity屏幕的方向定死。(游戏)
减少bug
•(掌握)任务栈
任务栈:用来记录用户的操作行为。
任务栈里面放置的都是Activity的引用。
栈:先进后出
压栈 弹栈
进栈 出栈
当启动一个应用程序,系统就会分配一个任务栈给应用。
任务栈:栈的id
•(掌握)activity的四种启动模式
四种启动模式:
standard 标准 (默认)
singleTop 独占顶端
singleTask 单任务栈
singleInstance 单实例
standard 标准 (默认)
特点:当你通过startActivity() 启动的activity的实例的引用就会放置在任务栈
每次启动都会创建一个新的实例
singleTop独占顶端
特点:如果activity已经在栈顶,那么不会创建新的实例,而会复用栈顶的Activity.
如果不再栈顶,创建新的实例
复用activity就会调用activity里面onNewIntent()方法
singleTask 单任务栈
特点:如果任务栈里面出现了activity,那么就会清空该activity上面所有的activity,再重用该Activity
singleInstance 单实例
特点:如果activity的启动模式设置了singleInstance 这样的activity会单独存放在一个任务栈里面。并且这样的实例只会有一份引用。
启动模式的应用场景
standard 标准:用的最多的 默认的
singleTop独占顶端 :浏览器的书签 手机卫士:黑名单列表
用户的行为:为了增加良好的用户体验、节约性能
singleTask单任务栈:用户的非常多。
应用程序的主界面
singleInstance单实例: 不多
电话应用通话的界面 修复bug:手机卫士 程序锁
1 统一管理界面
2 电话应用对速度要求非常高
有硬件的支持
3 可以节约性能
面试题:
请说说android里面的mvc?
mvc:mode v:view c:control
模型层
显示层
控制层
j2ee
软件开发都有 mvc的思想 就是看有没有人提出。
android里面没有提出mvc.
实体domain --》 表对象 属性public
显示层:Activity 显示控件给用户 操作
控制层:service 层 登录:LoginService
android里面确实是有mvc的思想。
那么android的设置者其实在android里面没有过多的提及。
android它提出的概念是基于组件的开发。
四大组件:
activity service broadcastreceiver contentprovider
但是开发还是会使用MVC的思想 主要体现在分包 domain service dao
2 请说说activity在mvc中的作用?
activity已经完整使了mvc
mode:模式 实体 -》数据
View:显示activity ListView
c:control:控制层 业务层 业务操作:被用户的行为来激活(调用)。
有自己的一定的理解。
作业: