Android重要组件之一 Service 服务讲解学习(一)

在Android有异步处理需要重要的Service和Handler组件,今天首先学习一下Service组件,
其中涉及到Android Service中进程间通信和bindService()的方法下一次在讲解学习
1:首先来看看在文档中对于Service的概念的解释:
Service是Android系统中的一种组件,重要性可以堪比Activity,但是也有显著的区别,Activity可以和用户进行交互,但是Service只能运行在后台,不能和用户直接交互;
当我们退出应用的时候,Service还会在后台运行,进程不会结束;特别注意我们需要使用的Service的时候,我们需要在AndroidManifset.xml文件的service标签进行注册
然后我们我们有两种启动Service的方法包括(①:Context.startService() 和②: Context.bindService()
2:需要使用Service的地方:
在文档中举了下面两个例子
最让我们想到的是应该是播放器的时候,我们可能需要边听歌边干些其他的事情,此时我们会退出播放器的应用,如果不适用Service的话,一退出应该应用我们就不能听歌了;还有比如我们需要通过网络获取数据,由于使用网络获取数据的速度比较慢,此时我们可以使用Service来在后台进行获取更新,隔一段时间把获取到的数据发回,而不是让我每次要获取数据都要打开应用;
3:Service与Activity通信:
Service后端的数据最终还是要呈现在前端Activity之上的,
在启动Service的时候,文档中这样描述:Note that services, like other application objects, run in the main thread of their hosting process
主要该Service,和其他应用对象一样,运行其应用进程主线程上
4:Service 启动方式:
一、context.startService()
二、context.bindService();
使用Service之前必须在AndroidMainfest.xml 中使用<service android:name=".service的类名"/>进行注册
5:Service的使用方法(我今天主要学习的是startService)
第一步:自己写一个继承Service类的类
第二步:在AndroidMainfest.xml文件中进行注册
第三步:startService()



6:生命周期:

首先看下声明周期的运行图

①: context.startService() 启动Service是会经历一下几个方法
启动的时候:context.startService() ---> onCreate() ---> onStartCommand()
销毁的时候:ontext.stopService() ---> onDestroy();
如果Service没运行,则此时会先调用onCreate()方法,然后再调用onStartCommand();
如果Service已经在运行,则只调用onStartCommand(),Service的onStartCommand(),方法可能会调用多次
②:
启动时候:context.bindService() ---> onCreate() --->onBind();
销毁的时候:onUnibind() ---> onDestroy()
onBind() 将会給客户端返回一个IBind接口的实例,此时客户端可以去调用服务的方法,不过此时Activity与Service算是绑定在一起了
意思是说如果Activity退出,那么此时的Service也会退出


接下来是实例Demo:

继承Service的方法: import android.app.Service; import android.content.Intent; import android.os.IBinder; public class ServiveTest extends Service { @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } @Override public void onCreate() { System.out.println("onCreat------->"); super.onCreate(); } @Override public void onDestroy() { // TODO Auto-generated method stub System.out.println("onDestroy------->"); super.onDestroy(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { System.out.println("onStartCommand------->"); return super.onStartCommand(intent, flags, startId); } }


今天就初步学习了一下Service的使用context.startService()的方法,下一次会进行使用context.bindService()和进程间通信的学习

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值