简介
Android Service的生命周期比activity要简单,很多android开发同学,都可以脱口而出,但service生命周期又很混乱,因为其生命周期并不是一成不变的。所以又有时我们会傻傻分不清楚。所以我们在这里用几个例子把service的生命周期彻底搞清楚。
目录
Service的生命周期
service的生命周期有哪些呢?
- onCreate : 当Service被创建时执行
- onStartCommand:当执行startService时被调用
- onStart:已经被onStartCommand代替,在本文中,将不在讨论onStart。
- onBind:当执行bindService时被调用。
- onUnbind:当执行unbindService是被调用
onDestroy:当Service被销毁时被调用
这几个生命周期大家应该都清楚,但我们很难像Activity一样把这些生命周期串在一起。因为在不同的情况下。生命周期的会有不同的组合方式,下面我们举个栗子来分析一下。
举个栗子
栗子来了,首先我们有一个这样的MainActivity
Activity中有四个Button 分别是
1. startService 启动service
2. bindService 绑定service
3. stopService 停止service
4. unbindService 解绑service
MainActivity的代码如下:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private static final String TAG = MainActivity.class.getSimpleName();
private ServiceConnection serviceConnection;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
serviceConnection = new MainServiceConnection();
findViewById(R.id.btn_start_service).setOnClickListener(this);
findViewById(R.id.btn_bind_service).setOnClickListener(this);
findViewById(R.id.btn_stop_service).setOnClickListener(this);
findViewById(R.id.btn_unbind_service).setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_start_service:
Intent startIntent = new Intent(this, MainService.class);