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 个回复

正序浏览
酱油要生抽 来自手机 中级黑马 2016-5-13 23:21:59
472#
好东西    顶来自: iPhone客户端
回复 使用道具 举报
已收藏!!!!!以后会用到的.........
回复 使用道具 举报
好贴,收藏了,向老师学习
回复 使用道具 举报
不错。。。。。。。
回复 使用道具 举报
hlh 中级黑马 2016-5-12 23:13:56
468#
楼主的资源太好了
回复 使用道具 举报
看一看。。。。。。。。。
回复 使用道具 举报
顶一个~~~~`顶一个~~~~`
回复 使用道具 举报
很好~~~顶一个
回复 使用道具 举报
好好好好好好哦。
回复 使用道具 举报
Ewig 来自手机 中级黑马 2016-5-12 12:37:44
463#
加油长沙
回复 使用道具 举报
hsy一生戎马 来自手机 中级黑马 2016-5-12 11:55:14
462#
理科男的文笔,你懂的!但是仍然掩盖不住他们的风骚和实力!还有那侧漏的幽默感!
回复 使用道具 举报
以前学过一些,现在都忘了
回复 使用道具 举报

好帖,收藏了
回复 使用道具 举报
好贴好贴
回复 使用道具 举报
码要自己敲出来,也不能被视频限制了自己的思想,怎么想,就把想的转换为代码敲出来
回复 使用道具 举报
Kevin.Guo 来自手机 中级黑马 2016-5-11 22:24:41
457#
完全看不懂,我才在Day02
回复 使用道具 举报
牛逼,太牛掰了,正在努力中
回复 使用道具 举报
谢谢分享,学习一下
回复 使用道具 举报
很好,给力~~~~~~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马