android之旅17 四大组件之服务基本概念

  • 服务可以理解为没有界面的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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值