黑马程序员技术交流社区
标题: 【长沙校区】十年磨一剑【基哥笔记】Android基础—Day07 [打印本页]
作者: allen927 时间: 2015-11-22 18:57
标题: 【长沙校区】十年磨一剑【基哥笔记】Android基础—Day07
本帖最后由 allen927 于 2015-11-22 18:59 编辑
同样的课程、老师、就业,更好的学习环境,更低的学习成本!
android基础Day07(广播服务)
《 如果感觉今天的知识点都会了,可以直接做作业,来进行检测》
•(了解)为什么需要广播接收者广播接收者:接收广播的,android设计了一个类BroadcastReceiver来描述广播接收者 ,四大组件之一。
广播:Broadcast
广播和广播接收者完成一个消息机制。重量级别 需要激活的组件
组件之间。应用和应用之间
消息机制:Handler +Message 用于线程之间。
•(掌握)有序广播和无序广播无序广播:没有接收的先后顺序,所有的广播接收者同时接收
有序广播:有接收的先后顺序,是由广播接收者自己指定。
取值:-1000-- 1000
如果先接收的广播接收者中断广播,那么后面的广播接收者就无法接收了。
例外:如果有序广播在发出的时候明确的指定了广播接收者,那么这样的广播无法中断,一定会传递给指定的接收者。
发送广播的方法
•(掌握)发送自定义的广播 发送普通广播
订阅广播:
1 xml清单订阅
2 java订阅
加强版
例子
如果是在Activity
的外部 去调用startActivity()
你需要给intent
添加一个flag
标记
有序广播
•(掌握)广播接受者案例-ip拨号器
扩展
黑名单 •(掌握)广播接收者案例-短信窃听器当手机接收到短信,就会发出一个有序的广播
\JB\frameworks\base\telephony\java\com\android\internal\telephony\SMSDispatcher.java
该广播接收者是在framework层 并不是在applications层
我的应用程序可以接收到短息,系统里面的短信应用也可以
•(掌握)广播接收者案例-sd卡状态监听当sdcard的状态发送改变,系统也会发出广播
1 挂载 mount
2 移除 unmount
3 开始扫描 start_scan
4 扫描完成 scan_finish
•(掌握)广播接收者案例-开机启动当你开机很多应用程序会自动启动。
这样应用程序监听了开始启动广播
手机的开机和关机都会发送广播。
•(掌握)广播接收者案例-监听卸载和安装很多手机助手 :当你安装了一个应用程序,安装了一个什么应用,扫描安全。
当手机系统安装和卸载软件,系统都会发出广播。
adb uninstall cn.itcast.custombroadcast
ab uninstall命令 cn.itcast.custombroadcast 应用程序的包名
adb install 安装命令
01-自定义广播.apk 安装的应用程序
开发:
发送广播: 1 系统发出的广播 2 自己发送广播
接收广播:
1 MyRecevier extends BroadcastReceiver {
onReceive();
}
2 订阅 xml订阅 java代码
当广播接收者接收到广播:onReceive()方法被激活,
生命周期 :onReceive()
•(掌握)面试题1 能不能在广播接收者里面执行耗时的操作
不行,onReceive()方法也是在主线程调用
如果10s内容该方法没有执行完成就会调用anr异常。
2 如果要执行耗时操作怎么办?
开线程是一个错误的行为。不靠谱的
需要开始一个服务
context.startService()
•(掌握)服务的特点1 没有界面
2 在后台长时间的运行
3 服务是无法自己启动
4 单例模式
android里面的服务是四大组件之一,android设计了Service类描述服务。
步骤:
1 MyService extends Service
2 在清单中使用service节点进行配置
3 启动服务:startService bindService
•(掌握)服务的生命周期 服务的生命周期会因为启动方式不一样而不同
停止服务的方式也是不同
startService() stopService()
onCreate() onStart() onDestory()
如果服务已经启动再去启动服务会调用服务里面的onStart()
bindService() unbindService()
onCreate() onBind() onUnbind() onDestroy()
是无法在正在运行的服务中找的。
一个Activity只能和一个服务绑定一次。
如果一个Activity已经绑定服务,那么activity退出一定解绑服务。
leak:泄露
onBind()能被调用几次?
多次
onUnbind()被调用几次?
多次
•(掌握)startService 和 bindService的区别 1 导致服务的生命周期不同
2 停止服务的方式不同
3 startService 启动的服务是可以在正在运行的服务中找到,
bindService是没有的
4 startService() 访问者和服务是没有关系的
bindService 访问者和服务是绑定在一起的 activity死了service死了 “同生共死”
5 startService()启动服务 不能直接调用服务里面的方法,
通过bindService activity就能调用服务里面的方法。
•(掌握)服务案例-电话窃听器电话窃听器
分析:没有界面 在后台长时间运行。使用服务来完成
所有的操作都是服务来完成 就直接使用startService()
public class PhoneService extends Service {
privatestatic final String TAG = "PhoneService";
privateTelephonyManager tm;
privateMyPhoneStateListener listener;
@Override
publicvoid onCreate() {
super.onCreate();
//电话管理器
tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
//电话状态监听器
listener= new MyPhoneStateListener();
//监听电话的状态
//权限:read_phone_state
tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
}
//电话状态监听
privateclass MyPhoneStateListener extends PhoneStateListener{
//当电话的呼叫状态改变
@Override
publicvoid onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state,incomingNumber);
switch(state) {
case TelephonyManager.CALL_STATE_IDLE://闲置
Log.i(TAG, "闲置");
break;
case TelephonyManager.CALL_STATE_RINGING://响铃
Log.i(TAG, "响铃");
break;
case TelephonyManager.CALL_STATE_OFFHOOK://接听
Log.i(TAG, "接听");
break;
default:
break;
}
}
}
@Override
publicvoid onStart(Intent intent, int startId) {
super.onStart(intent,startId);
}
@Override
publicIBinder onBind(Intent intent) {
returnnull;
}
@Override
publicvoid onDestroy() {
super.onDestroy();
//取消电话状态的监听
tm.listen(listener, PhoneStateListener.LISTEN_NONE);
}
}
•(了解)进程优先级android系统是会长时间的保留一个应用。
只有一种情况下,系统才会杀死进程。内存不足的时候。
原则:如何杀死进程?
进程的优先级别。
1 前台进程:正在显示用户可以操作
如果前台进程绑定了一个服务,服务所在的进程就属于前台进程
如果一个应用程序 Service 执行服务的生命周期方法onCreate() onStart() onDestory()
如果有一个应用程序BroadcastReceiver 的生命周期方法onReceive()
2 可视进程:用户可见 单无法操作
如果该进程绑定了服务,服务所在进程也属于可视进程
3 服务进程:在后台,应用里面有一个服务在运行
4 后台进程:在后台任务栈里面有activity
5 空进程 :在后台任务栈里面没有activity
面试题:
1如果一个应用在后台被杀死了,你如何处理?
操作:把服务进程提升为前台进程
作业:
数据库itcast.db
表名:incomings 表名:字段 _id number
查询: sql知识 count()函数 分组:number 排序order :统计的数量
db.rawQuery(sql);
db.query();
刷新数据:
电话响铃:插入数据 在服务发送一个广播。 发给显示界面里面的广播接收者(内部类 Activity java代码订阅)
下载资源
作者: 张美老师 时间: 2015-11-22 23:02
怒赞基哥
作者: 张美老师 时间: 2015-11-22 23:02
怒赞基哥
作者: 邓娇林 时间: 2015-11-23 09:51
赞~\(≧▽≦)/~
作者: 向上自由心 时间: 2015-11-23 21:31
神就在我们身边——
作者: chenxianzai 时间: 2015-11-24 21:50
大神太牛了,总结这么好,赞一个
作者: 超级宝贝乐爷 时间: 2015-12-5 22:03
果断支持啊!!!!!!!!!!!!!!!!!!!!!!
作者: 郑志龙~ 时间: 2015-12-7 21:43
为啥评论不了
作者: Id_820 时间: 2015-12-7 21:48
支持,支持
作者: 王帅--- 时间: 2015-12-7 21:58
支持,支持
作者: 947694252 时间: 2015-12-7 22:13
支持,支持
作者: 柠萌少年 时间: 2015-12-7 22:14
支持支持/....
作者: 月夜飘星 时间: 2015-12-7 22:15
支持支持!
作者: “不务正业” 时间: 2015-12-7 22:19
赞啊,就是牛。不过相信在不久的将来我也可以。哈哈哈。。
作者: 947694252 时间: 2015-12-7 22:28
壮哉我大黑马
作者: 王大可 时间: 2015-12-7 22:39
报道呀报到
作者: 小河北 时间: 2015-12-7 22:40
靠谱,绝地靠谱!
作者: vip003 时间: 2015-12-7 22:47
报道!!!!
作者: 王国平 时间: 2015-12-7 23:00
不管了,加油吧
作者: ATT丨bestcjy 时间: 2015-12-7 23:01
拼了,跪着走完!
作者: bbaijiajinger 时间: 2015-12-7 23:02
加油吧平凡的人
作者: xuran39847 时间: 2015-12-7 23:20
拼了,加油!
作者: chh 时间: 2015-12-7 23:43
加油加油
作者: 等待就是借口 时间: 2015-12-7 23:45
拼了,跪着走完!
作者: 洋葱头头 时间: 2015-12-8 10:08
基哥费心了 {:3_64:}
作者: wangyoucao 时间: 2015-12-8 11:48
学习了。。
作者: 西伯利亚的雪景 时间: 2015-12-8 12:30
顶贴,点赞,收藏,三步齐~
作者: 孜孜不倦 时间: 2015-12-8 15:45
赞一下,
作者: iamheima123 时间: 2015-12-8 18:08
6666666666666
作者: yuemingxingxing 时间: 2015-12-8 18:19
顶,厉害!!!!
作者: 蓝天白云101 时间: 2015-12-8 19:56
赞赞赞赞赞
作者: hbcoding 时间: 2015-12-8 19:58
6666666666
作者: 落叶无痕xiao 时间: 2015-12-8 20:15
持续给力中
作者: DEL 时间: 2015-12-8 21:22
能跪着走完都证明了你的努力,加油吧!
作者: liuruhui 时间: 2015-12-8 21:23
6666666666666666666666666666666
作者: “不务正业” 时间: 2015-12-8 21:25
顶啊。。。笔记十分的好啊。。。努力。。
作者: 温眸、 时间: 2015-12-8 21:33
绝对坚持!顶一个
作者: huwenkai87 时间: 2015-12-8 22:33
6666666666666666666666666666666
作者: Xiiian 时间: 2015-12-8 22:40
作者: 金金金小天 时间: 2015-12-8 22:44
新人报道,请多关注。
作者: wangqou1992 时间: 2015-12-8 23:02
拼了,加油!
作者: ToSina 时间: 2015-12-8 23:02
加油 加油 加油 加油
作者: zhiguoguo 时间: 2015-12-8 23:13
大神,大神,为什么你这么吊.
作者: zhiguoguo 时间: 2015-12-8 23:16
大神,大神,为什么你这么吊.
作者: zmttt 时间: 2015-12-8 23:48
6666666666666
作者: 王国平 时间: 2015-12-8 23:52
大神大神,加油加油
作者: 西伯利亚的雪景 时间: 2015-12-9 09:30
基哥贴,每日一顶~
作者: 司晓冰 时间: 2015-12-9 10:14
基哥贴,每日一顶~
作者: qq892384796 时间: 2015-12-9 10:15
111111111111111111111
作者: superlu 时间: 2016-3-4 22:15
我真的看不懂啊{:2_30:}
作者: 菇凉斋 时间: 2016-4-1 00:24
赞基哥,很实用,知识点分析强....赞赞赞
作者: 蒂尔 时间: 2016-4-18 08:47
谢谢分享
作者: Joarsea 时间: 2016-4-22 23:21
第7天的课程代码没有啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |