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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值