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(启动的)
- Bound(绑定的)
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的介绍的主要内容,如果未能解决你的问题,请参考以下文章