Android开发教程:Service的简介和启动方式
Android开发教程:Service的简介和启动方式
一.Service的简介
1.Service介绍和作用 Service是Android系统中的四大组件之一,它是一种长生命周期的,没有可视化界面,运行于后台的一种服务程序。比如我们播放音乐的时候,有可能想边听音乐边干些其他事情,当退出播放音乐的应用,如果不用Service,我 们就听不到歌了,所以这时候就得用到Service了。 2.Service生命周期 Service的生命周期并不像Activity那么复杂,它只继承了onCreate(),onStart(),onDestroy()三个方法,当第一次启动Service时,先后调用了onCreate(),onStart()这两个方法,当停止Service时,则执行onDestroy()方法,这里需要注意的是,如果Service已经启动了,当我们再次启动Service时,不会在执行onCreate()方法,而是直接执行onStart()方法。 二.Service的启动方式 Service的有两种启动方式:Context.startService()和Context.bindService(),这两种方式对Service生命周期的影响是不同的。 1.Context.startService()方式启动 ①Context.startService()方式的生命周期:启动时,startService –> onCreate() –> onStart()
停止时,stopService –> onDestroy() 如果调用者直接退出而没有停止Service,则Service 会一直在后台运行 Context.startService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onStart()方法。如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务,但会导致多次调用onStart()方法。采用startService()方法启动的服务,只能调用Context.stopService()方法结束服务,服务结束时会调用onDestroy()方法。 ②Context.startService()方式启动 Service的方法: 下面是具体例子: MainActivity.java
ServiceDemo.java
- package com.android.service.activity;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class MainActivity extends Activity
- {
- private Button startBtn;
- private Button stopBtn;
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- startBtn = (Button) findViewById(R.id.startBtn);
- stopBtn = (Button) findViewById(R.id.stopBtn);
- //添加监听器
- startBtn.setOnClickListener(listener);
- stopBtn.setOnClickListener(listener);
- }
- //启动监听器
- private OnClickListener listener=new OnClickListener()
- {
- @Override
- public void onClick(View v)
- {
- Intent intent=new Intent(MainActivity.this, ServiceDemo.class);
- switch (v.getId())
- {
- case R.id.startBtn:
- startService(intent);
- break;
- case R.id.stopBtn:
- stopService(intent);
- break;
- default:
- break;
- }
- }
- };
- }
- package com.android.service.activity;
- import android.app.Service;
- import android.content.Intent;
- import android.os.IBinder;
- import android.util.Log;
- public class ServiceDemo extends Service
- {
- private static final String TAG="Test";
- @Override
- //Service时被调用
- public void onCreate()
- {
- Log.i(TAG, "Service onCreate--->");
- super.onCreate();
- }
- @Override
- //当调用者使用startService()方法启动Service时,该方法被调用
- public void onStart(Intent intent, int startId)
- {
- Log.i(TAG, "Service onStart--->");
- super.onStart(intent, startId);
- }
- @Override
- //当Service不在使用时调用
- public void onDestroy()
- {
- Log.i(TAG, "Service onDestroy--->");
- super.onDestroy();
- }
- @Override
- //当使用startService()方法启动Service时,方法体内只需写return null
- public IBinder onBind(Intent intent)
- {
- return null;
- }
- }
|
评论暂时关闭