android之旅17 四大组件之服务基本概念
来源:互联网 发布:薛之谦淘宝衣服贵吗 编辑:程序博客网 时间:2024/06/06 03:02
- 服务可以理解为没有界面的Activity,用法也很像
- 试用适合在后台运行的代码,比如下载和播放音乐等
- 之前的下载代码放在Activity其实也是可以的,因为无论按返回键还是HOME键(区别是Activity会不会调用destroy方法),进程还是在的;但内存不足的时候,Activity进程会被杀死,导致后台下载任务无法执行,这也是服务的价值所在
- 进程优先级:Empty process(没有Activity,比如APP启动后按了返回键onDestroy) < background process(有Activity但不可见,比如APP启动后按了HOME键 onStop) < Service process(startService启动服务,一旦内存又有空闲还会重启)
<application> <service android:name="packageName.MyService"> -- 显式配置 <service></application>
public class MyService extends Service{ ....}//系统自动杀死的服务会自动重启,但用户手动的不会public void click(View v){//显式启动服务 Intent intent = new Intent(this, MyService.class); startService(intent);//开启服务 stopService(intent);//关闭服务,程序关闭的服务不会自己重启}
- 服务生命周期方法
- onStartCommand,老版本叫onStart,但已经废弃了,事实上内部还是调用onStart方法,在onCreate之后调用,每次尝试启动服务(startService方法调用)都会调用
- onCreate创建服务的时候调用,只会调用一次,服务启动会就不会调用,因此系统内部服务同一个服务只会创建一次
- onDestroy服务销毁的时候调用
电话录音机
- 电话状态机:空闲状态、响铃状态、摘机状态
- 注意权限
- 模拟器可能会有bug,前面录不到,真机没这个问题不用管
public class RecorderService extends Service{ public void onCreate(){ super.onCreate(); TelephonyManager tm = getSystemService(TELEPHONY_SERVICE); // 枚举确定监听哪个状态,在MyListener里面就复写哪个函数 tm.listen(newMyListener(), PhoneStateListener.LISTEN_CALL_STATE); }}public MyListener extends PhoneStateListener{ public void onCallStateChanged(int state, String incoming){ super.onCallStateChanged(state, incoming); switch(state){ case TelephonyManager.CALL_STATE_IDLE: case TelephonyManager.CALL_STATE_RING: //录音逻辑。。。谷歌给了例子,照抄就可以。见下图 break; case TelephonyManager.CALL_STATE_OFFHOOK: } }}
0 0
- android之旅17 四大组件之服务基本概念
- Android四大组件之服务
- Android四大组件之服务
- Android四大组件之服务
- Android四大组件之服务
- android四大组件之服务
- android四大组件之服务(Service)
- Android四大组件之---Service(服务)详解
- Android四大组件之Service服务
- Android四大组件之Service服务
- Android开发-四大组件之服务、广播
- Android四大组件之Service(服务)
- Android四大组件之Service(服务)(二)
- Android四大组件之 服务Service
- Android 四大组件学习之 Service 服务
- Android四大组件之服务(一)
- Android四大组件之Service--前台服务
- Android四大组件之服务(service)
- Random Walk for Image Segmentation 论文笔记
- 闪存浪潮下不得不知的知识(2)-颗粒篇
- 测试 __try, __finally, __except
- 选择排序
- 通过C#代码实现空间离散点的克里金(kriging)插值(一) 计算原理
- android之旅17 四大组件之服务基本概念
- response-实现验证码
- Swift 实现 iOS 类似微信输入框跟随键盘弹出的效果
- LeetCode: 008-Contains Duplicate
- 静态成员变量初始化问题
- 【cocos2d-x 3.x 学习与应用总结】3: CallFunc系列
- IM系统框架
- 给JFinal添加 Sqlite 数据库支持
- 点击弹出导航导航按钮菜单