美文网首页
Android基础回顾之Service

Android基础回顾之Service

作者: Man不经心 | 来源:发表于2018-09-05 18:10 被阅读0次

    Service

    四大组件之一,是Android的一种机制,服务是运行在主线程上的,没有界面

    1.service和Thread的区别和场景

    Thread:

    程序执行的最小单元,它是分配CPU的基本单位。

    • 生命周期:新建-就绪-运行-死亡-阻塞
    • 缺点:无法控制,当activity关闭之后不再持有thread,activity将无法控制thread

    Service:

    是Android的一种机制,由系统进程托管,服务是运行在主线程上的,不可以进行耗时操作

    • 生命周期:onCreate-onStart-onDestroy-onBind-onUnbind
      startService之后,onCreate只会调用一次,onstartCommand调用次数与startService调用次数相同
      stopService会调用onDestroy方法,一个activity被start又被bind之后,在没有解绑的前提下,stopService不会停止该服务
    service生命周期.png

    2.Service和IntentService

    谷歌官方不建议在Service中编写耗时的逻辑和操作,否则会引起ANR

    • IntentService是继承自Service并处理异步请求的一个类;
    • IntentServcie内部有一个工作线程HandlerThread来处理耗时操作,IntentService完成之后会自动停止;
    • IntentService内部是通过消息的方式发送给HandlerThread的,然后由Handler中的Looper来处理消息;
    • IntentService后台任务执行时顺序的,当有多个任务时,这些任务会按照调用顺序依次执行,完成之后自动停止

    3.启动服务和绑定服务

    1.先绑定服务后启动服务:绑定服务会转为启动服务运行状态,如果绑定的activity销毁,服务会继续运行
    2.先启动服务后绑定服务:服务不会转为绑定服务状态,会和Activity绑定,但是activity销毁,会按启动服务生命周期走

    • 启动服务的优先级比绑定服务高
    • 服务在其托管进程的主线程中运行(UI线程),如果要执行耗时操作,需在子线程中运行

    4.Parcelable和Serializable

    序列化:内存中对象-->磁盘
    反序列化:磁盘中对象-->内存
    Serializable是java提供的序列化接口,Parcelable是安卓特有的,效率上,Parcelable强于Serializable(主要是在内存开销上)
    组件中(内存中)传递数据,推荐使用Parcelable,如果序列化到存储设备,推荐Serializable

    Serializable:

    • 使用:实现Serializable接口
    • 特点:内存开销大

    Parcelable

    • 使用:实现Parcelable接口,需要添加静态成员变量,写的顺序和读的顺序要一致
    • 缺点:内存开销小,代码实现麻烦

    5.AIDL

    进程间通信(IPC)机制,AIDL是服务端和客户端都认可的接口
    1.创建AIDL:实体对象,新建AIDL文件,make工程
    2.服务端:新建Service,创建binder对象,定义方法
    3.客户端:实现ServiceConnection,BindService

    6.广播接收器,动态注册于静态注册区别

    广播接收器运行在UI线程,不能做耗时操作
    为什么要在onResume中注册广播,在onPause中注销广播?
    防止内存泄漏,onpause一定会执行,当系统内存紧张时,系统可能会回收 activity,而activity的onstop和ondestroy不一定会被执行

    • 使用方式:静态,在清单文件中通过<receiver>标签声明;动态,在代码中调用Context.registerReceiver
    • 特点:静态,常住进程中,不受组建生命周期影响;动态,受组件生命周期影响
    • 应用场景:静态,时刻监听广播;动态,需要在特定时刻接收广播

    7.webView安全漏洞

    相关文章

      网友评论

          本文标题:Android基础回顾之Service

          本文链接:https://www.haomeiwen.com/subject/rfhzwftx.html