service的一些基础知识

service的启动方式有两种:
startService():生命周期 startService()---onCreate()---onStartConmom()---onDestroy();
这种方式启动的话,需要注意一下几个问题:
1.:当我们通过startService被调用以后,多次在调用startService(),onCreate()方法也只会被调用一次,而onStartConmon()
会被多次调用当我们调用stopService()的时候,onDestroy()就会被调用,从而销毁服务。
2.当我们通过 startService启动时候,通过intent传值,在onStartConmon()方法中获取值的时候,一定要先判断intent是否为 null。
bindService():生命周期 bindService()---onCreate()---onBind()---unBind()---onDestroy();
bindService()这种方式进行启动service好处是更加便利activity中操作service,比如加入service中有几个方法,a,b ,如果要在
activity中调用,在需要在activity获取ServiceConnection对象,通过ServiceConnection来获取service中内部类的类对象,然后通过这个类对象就可以调用类中的方法,当然这个类需要继承Binder对象。
`private MyBindService service;

private ServiceConnection conn = new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName name, IBinder binder) {
        MyBindService.MyBinder myBinder = (MyBindService.MyBinder) binder;
        service = myBinder.getService();
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {
        Log.i("Kathy", "ActivityA - onServiceDisconnected");
    }
};`

下面代码是service的类部类
public class MyBinder extends Binder { public MyBindService getService() { return MyBindService.this; } }
bindService的特点
(1)每次调用服务必须首先bindService,执行unbindService后不能调用;
(2)服务的生命周期受限于UI线程。一旦应用(Activity)终止,服务将onDestory销毁;
(3)可以在绑定后调用服务里的功能。

混合调用(须按顺序操作):
(1)首先在主界面创建时,startService(intent)启动方式开启服务,保证服务长期后台运行;
(2)然后调用服务时,bindService(intent, connection, BIND_AUTO_CREATE)绑定方式绑定服务,这样可
以调用服务的方法;
(3)调用服务功能结束后,unbindService(connection)解除绑定服务,置空中介对象;
(4)最后不再需要服务时,stopService(intent)终止服务。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.什么是Activity?问的不太多,说点有深度的 四大组件之一,一般的,一个用户交互界面对应一个activit...
    JoonyLee阅读 11,010评论 2 51
  • 【Android Service】 Service 简介(★★★) 很多情况下,一些与用户很少需要产生交互的应用程...
    Rtia阅读 8,307评论 1 21
  • 0.Android手机操作系统的四层架构? Applications , Application Framewor...
    lucas777阅读 12,373评论 0 16
  • 2.1 Activity 2.1.1 Activity的生命周期全面分析 典型情况下的生命周期:在用户参与的情况下...
    AndroidMaster阅读 8,233评论 0 8
  • 自从奶奶患上了老年痴呆症后,总是忘记方才做过的事情 “妈,我们已经吃过饭了!”父亲走进厨房,见奶奶正拿刀切土豆,无...
    白妘泠阅读 2,880评论 5 6