Android 服务(service)的基础用法
2018-02-05 11:31
387 查看
作为Android四大组件之一,服务(service)也是非常重要的知识点,先来看一下如何定义一个服务,比如新建了一个ServiceTest项目,然后右击com.example.servicetest-->Service-->Service,就会看到如下窗口:
![](https://img-blog.csdn.net/20180205101102434?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVG9uZ3NpeXVhaWNoaWRhbWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
可以看到,这里我们将服务命名为MyService,Exported属性表示是否允许除了当前程序之外的其他程序访问这个服务,Enabled属性表示是否启用这个服务,将这两个属性都勾上,点击Finish完成创建.
现在观察MyService中的代码,如下:
可以看到,MyService是继承自Service类的,说明这是一个服务,目前MyService中可以算是空空如也,但有个onBind()方法特别醒目,这个方法是Service中唯一的一个抽象的方法,所以必须要在子类里实现.
既然是定义一个服务,自然应该在服务中无处理一些事情了,那处理事情的逻辑应该写在哪里呢?这时可以重写Service中的另外一些方法了,如下:
可以看到,这里我们又重写了onCreate(),onStartCommand(),onDestroy()这3个方法,它们是每个服务中最常用到的3个方法了,其中onCreate()方法会在服务创建的时候调用,onStartCommand()方法会在每次服务启动的时候调用,onDestroy()方法会在服务销毁的时候调用.
通常情况下,如果我们希望服务一旦启动就立刻去执行某个动作,就可以将逻辑写在onStartCommand()方法里,而当服务销毁时,我们又应该在onDestroy()方法中去回收那些不再使用的资源.
另外需要注意,每一个服务都需要在AndroidManifest.xml文件中进行注册才能生效,这已经是Android四大组件共有的特点,不过在我们创建MyService的时候,Android Studio早就已经自动棒我们将这一步完成了,打开AndroidManifest.xml文件,如下:
这样的话,就已经将一个服务完全定义好了.
可以看到,这里我们将服务命名为MyService,Exported属性表示是否允许除了当前程序之外的其他程序访问这个服务,Enabled属性表示是否启用这个服务,将这两个属性都勾上,点击Finish完成创建.
现在观察MyService中的代码,如下:
public class MyService extends Service { public MyService() { } @Override public IBinder onBind(Intent intent) { // TODO: Return the communication channel to the service. throw new UnsupportedOperationException("Not yet implemented"); } }
可以看到,MyService是继承自Service类的,说明这是一个服务,目前MyService中可以算是空空如也,但有个onBind()方法特别醒目,这个方法是Service中唯一的一个抽象的方法,所以必须要在子类里实现.
既然是定义一个服务,自然应该在服务中无处理一些事情了,那处理事情的逻辑应该写在哪里呢?这时可以重写Service中的另外一些方法了,如下:
public class MyService extends Service { ... @Override public void onCreate() { super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { super.onDestroy(); } }
可以看到,这里我们又重写了onCreate(),onStartCommand(),onDestroy()这3个方法,它们是每个服务中最常用到的3个方法了,其中onCreate()方法会在服务创建的时候调用,onStartCommand()方法会在每次服务启动的时候调用,onDestroy()方法会在服务销毁的时候调用.
通常情况下,如果我们希望服务一旦启动就立刻去执行某个动作,就可以将逻辑写在onStartCommand()方法里,而当服务销毁时,我们又应该在onDestroy()方法中去回收那些不再使用的资源.
另外需要注意,每一个服务都需要在AndroidManifest.xml文件中进行注册才能生效,这已经是Android四大组件共有的特点,不过在我们创建MyService的时候,Android Studio早就已经自动棒我们将这一步完成了,打开AndroidManifest.xml文件,如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.servicetest"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name=".MyService" android:enabled="true" android:exported="true"></service> </application> </manifest>
这样的话,就已经将一个服务完全定义好了.
相关文章推荐
- Android应用组件之服务(Service)---概述及基础
- android四大组件基础(五),绑定Service服务(含IPC)
- Android基础(十) Service 服务
- Android中的Service的用法 开启服务,下一篇讲绑定服务
- Android基础------Service服务
- Android service服务用法案例
- android基础笔记:服务(Service) 采用接口的方式调用本地服务的方法
- Android之Service(二):服务的基本用法
- Android四大组件之服务Service的用法
- 文章标题 android服务Service 的一些基本简介和用法
- android---(Service服务的基本用法)
- 【android基础】进程内后台服务 Service
- Android中的Service的用法之绑定服务
- android基础笔记:服务(Service):基础知识及本地服务的实现
- Android Service(服务)详解·(二)Service基本用法
- 详解Android中Service服务的基础知识及编写方法
- android基础笔记:服务(Service)跨进程调用Service(AIDL Service)
- android学习十八(Service服务的基本用法)
- Android Service 服务的基本用法