Android四大组件之Service的介绍

Posted 爱dy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android四大组件之Service的介绍相关的知识,希望对你有一定的参考价值。

Service的基本认识

Service是一个可以在后台执行长时间运行操作而不使用用户界面的应用组件.Service可由其他应用组件启动,而且即使用户切换到其他应用,Service仍将在后台继续运行.Service主要用于在后台处理一些耗时的逻辑,或者去执行某些需要长期运行的任务.必要的时候我们甚至可以在程序退出的情况下,让Service在后台继续保持运行状态.
Service和Activity很相似,但是区别在于:Service一直在后台运行,没有用户界面,所以不会到前台,如果Service被启动起来,就和Activity一样,具有自己的声明周期.另外,需要注意的是,Service和Thread不是一个意思,不要被Service的后台概念所迷惑.实际上Service并不会自动开启线程,所有的代码都是默认运行在主线程中的.因此,我们需要在Service的内部手动创建子线程,并在这里执行具体的任务,否则可能造成ANR的问题.

Service的形式

Service基本上分为两种形式:

  • Started(启动的)
当应用组件(如 Activity)通过调用 startService() 启动Service时,Service即处于“启动”状态.一旦启动,Service即可在后台无限期运行,即使启动Service的组件已被销毁也不受影响.通常,一个开启的Service执行单一操作并且不会给调用者返回结果.例如,它可能通过网络下载或上传文件.操作完成后,Service会自行停止运行.一个比较形象的比喻startService,//这种方式,就是说:“起来,快去干活,干完活就自己滚蛋,不用回来了”。
  • Bound(绑定的)
当应用组件通过调用 bindService() 绑定到Service时,Service即处于“绑定”状态.一个绑定的Service提供客户端/服务器接口允许组件和Service交互,甚至跨进程操作使用进行间通信(IPC).仅当与另一个应用组件绑定时,绑定服务才会运行.多个组件可以同时绑定到该服务,但全部取消绑定后,该服务即会被销毁.一个形象的比喻bindService,//这种方式,就是说:“起来,快去干活,有事电话联系”。

Service的使用

先使用startService()启动Service。

  • 新建一个MyService继承Service,并重写一些所需方法
package com.servicedemo;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

/**
 * Created by YK on 2016/8/26.
 */
public class MyService extends Service {
    //当其他组件调用bindService()方法请求绑定Service时,该方法被回调。(默认为null)
    @Override
    public IBinder onBind(Intent intent) {
        Log.e("kaka", "onBind");
        return null;
    }
    //当Service第一次创建时,回调该方法(只一次)。
    @Override
    public void onCreate() {
        super.onCreate();
        Log.e("kaka", "onCreate");
    }
    //当其他组件调用startService()方法请求启动Service时,该方法被回调(每次)。
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.e("kaka", "onStartCommand");
        return super.onStartCommand(intent, flags, startId);
    }
    //当Service被销毁时回调,在该方法中应清除一些占用的资源。
    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.e("kaka", "onDestroy");
    }
}

以上是关于Android四大组件之Service的介绍的主要内容,如果未能解决你的问题,请参考以下文章

Android安卓四大组件之Service

Android四大组件之Service

Android四大组件之Service

Android四大组件之service

android 四大组件之---Service

Android四大组件service之Bound Service