关于Service最基本的用法自然就是如何启动一个Service了,启动Service的方法和启动Activity很类似,都需要借助Intent来实现,下面我们就通过一个具体的例子来看一下。
新建一个Android项目
然后新建一个MyService继承自Service,并重写父类的onCreate()、onStartCommand()和onDestroy()方法,如下所示:
package com.example.g160628_android23; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.os.SystemClock; import android.support.annotation.IntDef; import android.support.annotation.Nullable; import android.util.Log; /** * Created by Administrator on 2017/7/14. */ public class MyServices extends Service { @Nullable @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); Log.i("test","onCreate"); } @Override public int onStartCommand(Intent intent,int flags, int startId) { new MyThread(startId).start(); return Service.START_STICKY; } class MyThread extends Thread{ private int startId; public MyThread(int startId) { this.startId = startId; } @Override public void run() { super.run(); for (int i = 0; i <=10 ; i++) { Log.i("test","onStartCommand"+i); SystemClock.sleep(500); } stopSelf(startId); } } @Override public void onDestroy() { super.onDestroy(); Log.i("test","onDestroy"); } }
可以看到,我们只是在onCreate()、onStartCommand()和onDestroy()方法中分别打印了一句话,并没有进行其它任何的操作。
然后打开或新建activity_main.xml作为程序的主布局文件,代码如下所示:
我们在布局文件中加入了两个按钮,一个用于启动Service,一个用于停止Service。
然后打开或新建MainActivity作为程序的主Activity,在里面加入启动Service和停止Service的逻辑,代码如下所示:
可以看到,在Start Service按钮的点击事件里,我们构建出了一个Intent对象,并调用startService()方法来启动MyService。然后在Stop Serivce按钮的点击事件里,我们同样构建出了一个Intent对象,并调用stopService()方法来停止MyService。代码的逻辑非常简单,相信不需要我再多做解释了吧。