android笔记

1.activity的intent-filter中action和category属性含义:
action表示该activity接受什么样的动作,比如值为android.intent.action.MAIN时表示这个activity可以作为程序入口用来启动,没有配置的不可以;值android.intent.action.VIEW/EDIT表示该activity可以用来显示和编辑指定数据;使用这两个值时,一般都要带上data属性指定数据;
category表示该activity是什么类型的activity,比如android.intent.category.LAUNCHER值表示该activity会出现在顶级程序列表中,android.intent.category.HOME表示该activity是承受系统启动时启动的acitivity,android.intent.category.BROWSABLE表示该activity可以由浏览器中输入网址而进入;
2.消息通知与app带参数启动过程
android可以有后台的service,可以在应用安装或启动后,永久性地启动用于接收消息的service,这个service的作用是将接收到的消息信息放在通知栏上去,同时将数据做一定封装,包括参数和需要处理的app;
用户点击消息时,会启动相应的app并带上参数intent;在app的acvitity中可以通过this.getIntent来拿到相应的参数内容;
3.Handler和AsyncTask
Handler是为解决主线程中才能更新UI的问题的,Handler可以用来往一个线程的消息队列发送消息的处理消息,一个线程只有一个消息队列与Looper处理循环,每一个handler都可以往里面放消息,也可以从里面取消息进行处理(只能取自己放进去的消息),在new一个handler时,会自动关联handler所在线程的looper和消息队列到handler上面;这样的机制使得只在主线程中更新UI可以实现,即在主线程new handler对象,并实现它的handlerMessage方法即可,需要创建子线程时,将handler的引用传递给子线程,子线程就可以拿这个handler对象并通过它往消息队列上发消息了http://www.cnblogs.com/codingmyworld/archive/2011/09/12/2174255.html。

4.FrameLayout是层叠的方式堆一起;

5.自定义权限使用过程(以activity为例):在目标进程中某个activity中定义打开这个activity所需要的自定义权限,在调用activity中定义该activity要用到的权限,如果能对上,则可访问目标activity,否则不能访问;

6.android的签名只有一个用处,即可以防止非来自签名的apk用以替换设备原有apk文件进行升级;但删除重装,修改id后安装则无法避免;一个证书可签名多个app,但一个app只能被一个证书签名,而且一台设备上只能安装一个具有相同包和签名和app;

7.拥有相同签名的多个app之间,可以通过共享用户id来共享彼此的数据,通过manifest.xml中的sharedUserId属性指定;

8.库项目是指可以作为某些app共用的项目,比如不同app都有一些activity是长得差不多或者一样的,这样可以将这些功能点定义为库项目,把庞大工程划分为库项目也利于团队协作和模块划分;库项目中一般用来实现一些公共的activity或者一些公共基础模块,库项目建立过程与主项目一样,也有自己的manifest.xml文件,在其中定义acitivity等(一般没必要这样做,只需要知道这个库支持哪些activity就可以了),只需要将属性设置为Is library即可,在主项目中可以设置对库项目的依赖关系,这样就可以在主项目中使用库项目中所定义的内容,实现代码模块分离和复用。

9.android的4个主要组件是:1)activity; 2)service; 3)content provider; 4)broadcast receiver;
10.android中主线程执行主要工作,运行所有组件,主线程通过一个消息队列来完成运行组件的任务,主线程处在一个循环中处理每条消息,任何一条消息用时超过5秒,则android将抛出ANR异常;因此,任何超过5秒的操作都不应在主线程中运行;
11.其中活动,service,broadcast都是在主线程上运行的,而且都是将消息丢在主线程的消息队列中,主线程会去处理它;而本地ContentProvider虽也在主线程上运行,但对它的调用方式不是消息队列,而是异步调用;
12.activity生命周期:


13.service生命周期:


14.contentprovider生命周期:ContentProvider是应用安装时候就存在,卸载后消失,没有运行状态,仅仅是提供一个uri供其它人使用;
15.broadcast receiver生命周期:生命周期只有十秒左右,如果在 onReceive() 内做超过十秒内的事情,就会报ANR(Application No Response) 程序无响应的错误信息;它的生命周期为从回调onReceive()方法开始到该方法返回结果后结束。

16.android的主屏幕部件是指类似在桌面上显示的widget,它可以大大改善用户体验,对开发者而言,要开发一个这个的部件需要:
1)在manifest.xml文件中用receiver关键字定义部件,android系统会根据设定的时间间隔,以广播消息形式提供更新消息;
2)提供实现部件的布局文件,也即使用appwidget-provider标签来定义,规定部件的大小,更新频率等,在这个布局文件中可以引用实际显示的layout.xml文件;
3)实现部件的java类,在其中实现onUpdate/onDisabled/onDelete等方法;
4)应用安装后,即可向桌面添加其中包含的部件了;

17.android的搜索可以提供本地与web的综合搜索结果聚合,所以一方面可以让我们的app提供可供搜索调用的接口,使我们的内容能够出现在搜索框里,另一方面我们也可以在我们的app内部调用搜索框,为之寶自定义建议等,还可以禁止在我们app打开的过程中响应搜索按键等。

18.fragment是为了解决元素复用而引入的一个概念,是android中比activity更小的一个单位,它直接继承自Object,可依附(attach)到一个activity上,也可以dettach;可以静态地在xml文件里指定来使用,也可以动态在java代码中创建Fragment;而fragement可以通过FragmentManager来获得和查询Fragment实例;Fragment栈还使得按回退键不再以activity为唯一单位,可以以Fragment为单位来做回退操作。

19.android的actionBar也就是之前标题栏的位置,可以加入按钮等快捷操作菜单,是android3.0之后引入的功能;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值