一.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()方式的生命周期: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;
- }
- }