Service的声明周期相比于activity的声明周期要简单的多。下图就是来自https://developer.android.google.cn/guide/components/services#Lifecycle的图片。
我们写一个myservice:
package com.example.myservice;
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;
public class MyService3 extends Service {
private MyService3.DownloadBinder downloadBinder = new MyService3.DownloadBinder();
public MyService3() {
Log.d("TAG", "MyService3");
}
@Override
public void onCreate() {
super.onCreate();
Log.d("TAG", "onCreate");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d("TAG", "onStartCommand");
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
Log.d("TAG", "onBind");
// throw new UnsupportedOperationException("Not yet implemented");
return downloadBinder;
}
@Override
public boolean onUnbind(Intent intent) {
Log.d("TAG", "onUnbind");
return super.onUnbind(intent);
}
@Override
public void onRebind(Intent intent) {
super.onRebind(intent);
Log.d("TAG", "onRebind");
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d("TAG", "onDestroy");
}
class DownloadBinder extends Binder {
public void startDownload() {
Log.d("TAG", "startDownload");
}
public int getProgress() {
Log.d("TAG", "getProgress");
return 0;
}
}
}
开启服务:
然后通过startService()方式开启服务:一直点击开启
onCreate->onStartConnand()->onStartConnand()->onStartConnand()->。。。
通过:stopService()结束:
->onDestroy()
绑定服务:
通过bindService()绑定服务:连续绑定并没有一直执行
onCreate->onBind
通过unbindService()解绑服务:
->onUnbind->onDestroy
开启服务和绑定服务并不是完全独立的,然后我们再次尝试:
开启服务、绑定服务都执行:
1.startService()、bindService():
onCreate->onStartCommand->onBind ->继续点击->onStartCommand ->onStartCommand->onStartCommand
-----------------------------------------------------------------------------------------------------------------
1.stopService():先执行没有走任何生命周期
2.unbindService():后执行走生命周期 onUnbind-> onDestroy
--------------------------------------------------------------------------------------------------------------------
1.unbindService():先执行解绑 走:onUnbind
2.stopService():后执行停止服务走:onDestroy
-----------------------------------------------------------------------------------------------------------------------
2.bindService()、startService():
onCreate->onBind->onStartCommand-> 一直操作->onStartCommand->->onStartCommand->->onStartCommand->
-------------------------------------------------------------------------------------------------------------------
1.stopService():先执行没有走任何生命周期
2.unbindService():后执行走生命周期 onUnbind-> onDestroy
--------------------------------------------------------------------------------------------------------------------
1.unbindService():先执行解绑 走:onUnbind
2.stopService():后执行停止服务走:onDestroy
--------------------------------------------------------------------------------------------------------------------
根据以上可以看出当既开启服务又绑定服务的时候当需要关闭服务的时候需要两个方法都执行。
转发表明出处:https://blog.csdn.net/qq_35698774/article/details/107620775
android互助群: