Android Service总结

#.两种启动模式下的生命周期示例图
#.两种启动模式
##.两种模式
两种运行模式:直接启动  or  绑定,对应的生命周期如上图所示。
大概总结:
模式一: 调用方无法与Service有效通信。startService()激活,stopService()关闭。
              这种方式启动Service后,Service自行进行其生命周期中的任务,外界无法与其继续进行交互。
             (注:Android8.0以后,新增 startForegroundService()方法,可以用来启动前台服务,
                        但要在Service启动时,内部需要调用startForeground()来弹出一个通知,否则会报错。具体配置,可以参考本文后面的内容。)
模式二: 调用方可以与Service进行通信。多个调用方可以绑定同一个Service,只有所有调用方都解绑定了,Service才销毁。
              这种方式启动Service,可以在回调中拿到Binder对象,进而可以后继与Service进行各种交互。
               bindService( Intent, ServiceConnection, 连接方式);//绑定时,与ServiceConnection连接对象相关联
                   会触发Service生命周期中的onBind()方法,该方法返回一个Binder对象
                    ——> 会触发上面ServiceConnection的 onServiceConnection(Binder)方法,并作为参数传入。
                   从而,调用方Activity可以获取到Service返回的Binder对象,进而通过调用Binder对象的方法 在Service中执行一些逻辑。
               unBindService(ServiceConnection);//解除指定的绑定
(Service只是一个没有UI,运行在后台的组件而言,按照普通方式生成和注册的本地Service仍然是运行在app进程的主线程中的。
        只有远程Service才是运行在其它进程中,那需要写相应的aidl脚本并在AndroidManifest.xml文件中声明Service时进行相应处理。
    相应参考: android-Service和Thread的区别 - 路人浅笑 - 博客园)
##.代码示例
1.直接启动
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android开发中,Service是一个非常重要的组件,用于在后台执行长时间运行的操作,不与用户交互。以下是本次实验的总结: 1. Service生命周期 Service的生命周期包括:onCreate()、onStartCommand()、onBind()、onUnbind()、onRebind()和onDestroy()。开发者可以根据不同的业务需求实现这些生命周期函数。 2. Service的启动和停止 Service的启动和停止有两种方式:使用startService()和stopService()方法来启动和停止Service;使用bindService()和unbindService()方法来绑定和解绑Service。需要注意的是,使用startService()方法启动的Service会一直运行,直到调用stopService()方法或者Service自己调用stopSelf()方法;使用bindService()方法启动的Service会在与之绑定的Activity销毁时自动停止。 3. Service的通信 Service可以和Activity之间进行通信,可以使用Intent传递数据,也可以使用Messenger进行通信。如果需要在Service中执行耗时操作,需要在Service中开启一个新的线程来执行,否则会阻塞主线程。 4. Service的注册 在AndroidManifest.xml文件中注册Service,可以使用以下代码: ``` <service android:name=".MyService" /> ``` 5. Service的注意事项 在使用Service时,需要注意以下几点: - Service是在主线程中运行的,不能在Service中执行耗时操作,否则会阻塞主线程。 - Service一旦启动就会一直运行,需要在适当的时候停止Service。 - Service可以和Activity之间进行通信,需要根据具体的业务需求选择合适的通信方式。 总之,ServiceAndroid开发中非常重要的组件,掌握其使用方法和生命周期函数对于开发高质量的Android应用程序非常有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值