Service简单学习

本文介绍了Android中的Service组件,强调其无用户界面、后台运行的特点。讲解了Service的创建、配置,以及通过startService()和bindService()启动的区别。重点讨论了Service的生命周期,展示了startService()启动时onCreate()和onStartCommand()的调用规律,以及bindService()启动时onBind()的重要性。同时,通过实例演示了如何通过bindService()实现Activity与Service的通信和数据交换,强调了bindService()的唯一绑定特性与startService()的多次启动行为。最后,作者鼓励读者通过实践进一步理解和掌握Service的使用。
摘要由CSDN通过智能技术生成
  • 第一:什么是Service?
    Service是四大组件之一,Service与Activity相似,我们知道什么是Activitiy就好容易理解什么是Service,Service与Activity最大区别就在于Activity是负责与用户交互的,有界面,用户可视,而Service是没有用户界面的,位于后台,为整个程序提供服务的。Service与Activity都是Context派生出来的,因此也可以调用Context的方法。

  • 第二:创建与配置Service
    (1)创建一个继承自Service的类,实现父类的几个方法
    (2)在AndroidMenifest中使用service标签声明

  • 第三:
    了解Service的生命周期,使用startService()与bindService()启动的Service生命周期不一样,简单的画了个图

Service两种启动方式,生命周期对比

从图中可以看出,startService中在onCreate之后进入到onStartCommand就开始运行,相关逻辑就在onCreate和onStartCommand方法中操作,bindService中在onCreate之后,还会走onBind方法,进入onBind()方法,Service开始运行,相关逻辑代码,在onBind方法中编写,当用户点击退出服务时,即调用了unBind方法,之后
会走onDestory方法,

自己编写了一个简单的启动Service的程序,什么操作也没有,仅仅在生命周期中打印了几条日志
启动服务界面代码:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
   
    Button bind, unBind;
    Intent intent;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bind = (Button) findViewById(R.id.bind);
        unBind = (Button) findViewById(R.id.unbind);
        bind.setOnClickListener(this);
        unBind.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.bind:
                 intent=new Intent(MainActivity.this,MyService.class);
                startService(intent);
                break;
            case R.id.unbind:
                stopService(intent);
                break;
        }
    }
}

Service类代码:

public class MyService extends Service{
   
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {

      Log.d("My
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值