A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 allen927 于 2015-11-15 23:29 编辑


同样的课程、老师、就业,更好的学习环境,更低的学习成本!
内地学员,选择长沙校区,靠谱!!!
报名热线:0731-85833115
  QQ  : 2355535415

android基础Day06(Activity)


《 如果感觉今天的知识点都会了,可以直接做作业,来进行检测》

•(掌握)意图激活新的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 请说说activitymvc中的作用?
activity已经完整使了mvc  
mode:模式  实体  -》数据  
View:显示activity  ListView
c:control:控制层 业务层  业务操作:被用户的行为来激活(调用)。
有自己的一定的理解。

作业:





下载资源

Doc笔记
课程视频代码
作业视频代码


相关链接:
长沙中心--黑马双元课堂JAVA入学辅导班1期火爆开班啦!!!
长沙黑马程序员学习激情无限“吊炸天”
黑马程序员长沙校区生活圈,60秒搞定吃住学
http://bbs.itheima.com/thread-243108-1-1.html


471 个回复

倒序浏览
来给基哥顶一下贴,先收藏再看!
回复 使用道具 举报
现在在学java基础,好想碰安卓了
回复 使用道具 举报
基哥的贴, 必须要顶...
回复 使用道具 举报 1 0
我再顶顶顶...
回复 使用道具 举报 1 0
笔记太多了  !  看都看不完了
回复 使用道具 举报 1 0
顶顶顶...
回复 使用道具 举报
没有梦想,跟咸鱼有什么区别
回复 使用道具 举报 1 0
好强大,好牛X,我要向你学习
回复 使用道具 举报 1 0
。。完全看不懂啊 还是我太菜了
回复 使用道具 举报 1 0
好帖,收藏了
回复 使用道具 举报 1 0
en..........................................
回复 使用道具 举报
好东西啊
回复 使用道具 举报
内容好丰富,谢谢
回复 使用道具 举报 1 0
oup 中级黑马 2015-11-18 23:15:38
15#
先标记,基础班毕业后过来看
回复 使用道具 举报
影明 中级黑马 2015-11-18 23:22:48
16#
非常非常给力啊!!!
回复 使用道具 举报
进来学习来的
回复 使用道具 举报
pt8422068 来自手机 中级黑马 2015-11-19 00:33:52
18#
给力,...././//......
回复 使用道具 举报
pt8422068 来自手机 中级黑马 2015-11-19 00:48:39
19#
顶起........
回复 使用道具 举报
还不够 来自手机 中级黑马 2015-11-19 21:07:46
20#
赞一个…………
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马