首页 > 程序开发 > 移动开发 > Android >

Android服务Service详解(作用,生命周期,AIDL)系列文章--服务的生命周期

2017-06-19

Android服务Service详解(作用,生命周期,AIDL)系列文章--服务的生命周期。

Android服务Service详解(作用,生命周期,AIDL)系列文章--服务的生命周期

前面一篇文章,我们说了为什么需要服务嘛:

首先,我们去创建一个服务,叫做SOBTestServices,并且继承自Service这个类。然后,去复写几个生命周期方法,详细说明请看代码吧:

package com.sunofbeaches.servicetestdemo;
 
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.support.annotation.Nullable;
import android.util.Log;
 
/**
 * Created by TrillGates on 17/4/15.
 * God bless my code!
 */
public class SOBTestService extends Service {
 
    private static final String TAG = "SOBTestService";
 
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
 
    @Override
    public void onCreate() {
        super.onCreate();
        Log.d(TAG, "服务被创建了....");
    }
 
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d(TAG, "执行了 onStartCommand...");
        return super.onStartCommand(intent, flags, startId);
    }
 
    @Override
    public void onStart(Intent intent, int startId) {
        super.onStart(intent, startId);
        Log.d(TAG, "这个方法已经过时了,所以我们一般不会使用的!!!!");
    }
 
    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "服务被销毁了....");
    }
}
然后在我们的MainActivity里头,创建两个按钮。UI的代码如下:


接着是MainActivity的代码:
package com.sunofbeaches.servicetestdemo;
 
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
 
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
    }
 
    /**
     * 开始服务
     *
     * @param view
     */
    public void start(View view) {
        Intent intent = new Intent(this, SOBTestService.class);
        startService(intent);
    }
 
    /**
     * 停止服务
     *
     * @param view
     */
    public void stop(View view) {
        Intent intent = new Intent(this, SOBTestService.class);
        stopService(intent);
    }
 
}

然后我们愉快地运行起来是这样子的嘛(记得要在配置文件里头去配置一下服务哦!):

\

相关的操作和输入的Log如下:

点击开始服务:

\

可以看到,执行了onCreate方法,执行了onStartCommand方法,也执行了onStart方法。

我再次,看清楚了,是再次点击开始服务的按钮:

\

我们惊讶地发现,执行了onStart方法,执行了onStartComand方法,但是,并没有执行onCreate方法。

这个时候,我去点击停止服务:

\

我们可以看出,执行了onDestroy方法。
我再次去点击停止服务:
竟然没有反应是吧,结论来了,我们总结一下吧!
从上面的操作,我们可以得出以下的结论:

  • 开启服务,则会先执行onCreate方法,如果服务已经启动了,则不会再执行onCreate方法。
  • 多次开启服务会执行onStart方法和onStartCommand方法,但是onStart方法已经过时了不推荐使用这个。
  • 停止服务会执行onDestroy方法
  • 如果服务已经停止了,再停止服务无效。
    这就是服务最简单的生命周期啦,接下来,我们会在一下篇文章里头分析服务更复杂的生命周期。
相关文章
最新文章
热点推荐