android service 总结(2)

1.service 与 Thread:

    service运行在主线程当中,在service中执行耗时的操作同样会ANR。

    Thread 的回收优先级比 service高,所以当内存不足的时候会优先回收Thread。

    回收的优先级从高到低依次是 空进程,后台进程,服务进程,可视进程,前台进程。

2.远程Service:

    声明service为远程进程,需要更改清单文件 android:process。

    远程service 会独立运行在另外一个进程当中, 所以执行耗时的操作并不会阻塞主线程。

    如果activity 与 service不在同一个进程当中, 而acitivty直接进行绑定service操作会崩溃,因为他们不在同一个进程当中。

    如果想与远程的service 进行通信 就要用到 AIDL技术。

    AIDL(Android Interface Definition Language)是Android接口定义语言的意思,它可以用于让某个Service与多个应用程序组件之间进行跨进程通信,从而可以实现多个应用程序共享同一个Service的功能。

    (1).android studio 需要new一个aidl文件,aidl 文件类似一个接口,定义接口中的方法。(需要注意: build之后这个aidl才可以使用)

    (2).在service中创建 自定义的aidl类的子类 Stub ,重写接口中的方法,并实现。

    (3).activity 创建ServiceConnection 类,并重写相关方法, onServiceConnection 方法中获取iBinder 对象,

    (4).并通过aidl类的Stub的asinterface方法转成aidl类,之后就可以使用service中的方法了(以上只是在同一个项目中进行aidl , 实际开发中是跨应用去调取service的)


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值