Android服务Service详解(作用,生命周期,AIDL)系列文章--服务的生命周期
2017-06-18 13:55
645 查看
Android服务Service详解(作用,生命周期,AIDL)系列文章--服务的生命周期
前面一篇文章,我们说了为什么需要服务嘛:
首先,我们去创建一个服务,叫做SOBTestServices,并且继承自Service这个类。然后,去复写几个生命周期方法,详细说明请看代码吧:
然后我们愉快地运行起来是这样子的嘛(记得要在配置文件里头去配置一下服务哦!):
相关的操作和输入的Log如下:
点击开始服务:
可以看到,执行了onCreate方法,执行了onStartCommand方法,也执行了onStart方法。
我再次,看清楚了,是再次点击开始服务的按钮:
我们惊讶地发现,执行了onStart方法,执行了onStartComand方法,但是,并没有执行o
d323
nCreate方法。
这个时候,我去点击停止服务:
我们可以看出,执行了onDestroy方法。
我再次去点击停止服务:
竟然没有反应是吧,结论来了,我们总结一下吧!
从上面的操作,我们可以得出以下的结论:
开启服务,则会先执行onCreate方法,如果服务已经启动了,则不会再执行onCreate方法。
多次开启服务会执行onStart方法和onStartCommand方法,但是onStart方法已经过时了不推荐使用这个。
停止服务会执行onDestroy方法
如果服务已经停止了,再停止服务无效。
这就是服务最简单的生命周期啦,接下来,我们会在一下篇文章里头分析服务更复杂的生命周期。
网易云视频:
社区网站:
前面一篇文章,我们说了为什么需要服务嘛:
首先,我们去创建一个服务,叫做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的代码如下:
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="start" android:text="开启服务"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="stop" android:text="停止服务"/> </LinearLayout>接着是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方法,但是,并没有执行o
d323
nCreate方法。
这个时候,我去点击停止服务:
我们可以看出,执行了onDestroy方法。
我再次去点击停止服务:
竟然没有反应是吧,结论来了,我们总结一下吧!
从上面的操作,我们可以得出以下的结论:
开启服务,则会先执行onCreate方法,如果服务已经启动了,则不会再执行onCreate方法。
多次开启服务会执行onStart方法和onStartCommand方法,但是onStart方法已经过时了不推荐使用这个。
停止服务会执行onDestroy方法
如果服务已经停止了,再停止服务无效。
这就是服务最简单的生命周期啦,接下来,我们会在一下篇文章里头分析服务更复杂的生命周期。
网易云视频:
社区网站:
相关文章推荐
- Android服务Service详解(作用,生命周期,AIDL)系列文章--进一步封装绑定服务(私有化代理类)
- Android服务Service详解(作用,生命周期,AIDL)系列文章-为什么需要服务呢?
- Android服务Service详解(作用,生命周期,AIDL)系列文章--服务绑定和开启混合使用
- Android服务Service详解(作用,生命周期,AIDL)系列文章--远程服务AIDL&IPC
- Android服务Service详解(作用,生命周期,AIDL)系列文章--绑定服务
- Android中Service的生命周期,远程服务,绑定远程服务,aidl服务调用
- Android Service详解(六)---绑定服务BoundService详解之AIDL的自定义属性使用
- 18_Android中Service的生命周期,远程服务,绑定远程服务,aidl服务调用,综合服务案例,编写一个应用程序调用远程支付宝远程服务场景
- Android深入浅出系列之服务—Android中的Service(一)
- Android Service学习之AIDL, Parcelable和远程服务
- Android Service学习之AIDL, Parcelable和远程服务
- Android Service学习之AIDL, Parcelable和远程服务
- Android Service学习之AIDL, Parcelable和远程服务
- Android中Service(服务)详解
- Android Service学习之AIDL, Parcelable和远程服务
- Android服务之Service(其二)关于AIDL进程间通信
- Android Service学习之AIDL, Parcelable和远程服务
- android跨进程调用Service(AIDL服务)
- Android四大组件——Service 生命周期详解
- Android Service学习之AIDL, Parcelable和远程服务