当前位置:操作系统 > 安卓/Android >>

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()和进程间通信的学习

摘自 寒夜---菜鸟学习之路

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,