AndroidÏîÄ¿ÖHomeHealth»ù´¡Ñ§Ï°1£ºService
Ò»¡¢ Service¼ò½é
ServiceÊÇandroid ϵͳÖеÄËÄ´ó×é¼þÖÒ»£¨Activity¡¢Service¡¢BroadcastReceiver¡¢ContentProvider££¬Ëü¸úActivityµÄ¼¶±ð²î²»¶à£¬µ«²»ÄÜ×Ô¼ºÔËÐÐÖ»Äܺǫ́ÔËÐУ¬²¢ÇÒ¿ÉÒÔºÍÆäËû×é¼þ½øÐн»»¥¡£service¿ÉÒÔÔںܶೡºÏµÄÓ¦ÓÃÖÐʹÓ㬱ÈÈç²¥·Å¶àýÌåµÄʱºòÓû§Æô¶¯ÁËÆäËûActivityÕâ¸öʱºò³ÌÐòÒªÔÚºǫ́¼ÌÐø²¥·Å£¬±ÈÈç¼ì²âSD¿¨ÉÏÎļþµÄ±ä»¯£¬ÔÙ»òÕßÔÚºǫ́¼Ç¼ÄãµØÀíÐÅϢλÖõĸıäµÈµÈ£¬×ÜÖ·þÎñ×ÜÊDzØÔÚºǫ́µÄ¡£
ServiceµÄÆô¶¯ÓÐÁ½ÖÖ·½Ê½£ºcontext.startService() ºÍ context.bindService()
¶þ¡¢ ServiceÆô¶¯Á÷³Ì
context.startService() Æô¶¯Á÷³Ì£º
context.startService() -> onCreate() -> onStart() -> Service running -> context.stopService() -> onDestroy() -> Service stop
Èç¹ûService»¹Ã»ÓÐÔËÐУ¬ÔòandroidÏȵ÷ÓÃonCreate()£¬È»ºóµ÷ÓÃonStart()£»
Èç¹ûServiceÒѾÔËÐУ¬ÔòÖ»µ÷ÓÃonStart()£¬ËùÒÔÒ»¸öServiceµÄonStart·½·¨¿ÉÄÜ»áÖØ¸´µ÷Óöà´Î¡£
Èç¹ûstopServiceµÄʱºò»áÖ±½ÓonDestroy£¬Èç¹ûÊǵ÷ÓÃÕß×Ô¼ºÖ±½ÓÍ˳ö¶øÃ»Óе÷ÓÃstopServiceµÄ»°£¬Service»áÒ»Ö±ÔÚºǫ́ÔËÐУ¬¸ÃServiceµÄµ÷ÓÃÕßÔÙÆô¶¯ÆðÀ´ºó¿ÉÒÔͨ¹ýstopService¹Ø±ÕService¡£
ËùÒÔµ÷ÓÃstartServiceµÄÉúÃüÖÜÆÚΪ£ºonCreate --> onStart (¿É¶à´Îµ÷ÓÃ) --> onDestroy
context.bindService()Æô¶¯Á÷³Ì£º
context.bindService() -> onCreate() -> onBind() -> Service running -> onUnbind() -> onDestroy() -> Service stop
onBind()½«·µ»Ø¸ø¿Í»§¶ËÒ»¸öIBind½Ó¿ÚʵÀý£¬IBindÔÊÐí¿Í»§¶Ë»Øµ÷·þÎñµÄ·½·¨£¬±ÈÈçµÃµ½ServiceµÄʵÀý¡¢ÔËÐÐ״̬»òÆäËû²Ù×÷¡£Õâ¸öʱºò°Ñµ÷ÓÃÕߣ¨Context£¬ÀýÈçActivity£»áºÍService°ó¶¨ÔÚÒ»Æð£¬ContextÍ˳öÁË£¬Srevice¾Í»áµ÷ÓÃonUnbind->onDestroyÏàÓ¦Í˳ö¡£
ËùÒÔµ÷ÓÃbindServiceµÄÉúÃüÖÜÆÚΪ£ºonCreate --> onBind(Ö»Ò»´Î£¬²»¿É¶à´Î°ó¶¨) --> onUnbind --> onDestory¡£
ÔÚServiceÿһ´ÎµÄ¿ªÆô¹Ø±Õ¹ý³ÌÖУ¬Ö»ÓÐonStart¿É±»¶à´Îµ÷ÓÃ(ͨ¹ý¶à´ÎstartServiceµ÷ÓÃ)£¬ÆäËûonCreate£¬onBind£¬onUnbind£¬onDestoryÔÚÒ»¸öÉúÃüÖÜÆÚÖÐÖ»Äܱ»µ÷ÓÃÒ»´Î¡£
Èý¡¢ ServiceÉúÃüÖÜÆÚ <†·Ÿ"http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPjwvcD4KPHA+ClNlcnZpY2W1xMn6w/zW3MbasqKyu8/xQWN0aXZpdHnEx8O0uLTU06Osy/zWu7zMs9DBy29uQ3JlYXRlKCmhom9uU3RhcnQoKaGib25EZXN0cm95KCnI/bj2t723qDwvcD4KPHA+CrWxztLDx7Xa0ru0zsb0tq9TZXJ2aWNlyrGjrM/IuvO199PDwctvbkNyZWF0ZSgpoaJvblN0YXJ0KCnV4sG9uPa3vbeoo7u1sc2j1rlTZXJ2aWNlyrGjrNTy1rTQ0G9uRGVzdHJveSgpt723qKGjPC9wPgo8cD4K1eLA79Do0qrXotLitcTKx6OsyOe5+1NlcnZpY2XS0b6txvS2r8HLo6y1sc7Sw8fU2bTOxvS2r1NlcnZpY2XKsaOssru74dTa1rTQ0G9uQ3JlYXRlKCm3vbeoo6y2+MrH1rG909a00NBvblN0YXJ0KCm3vbeooaM8YnI+CjwvcD4KPHA+Csv8v8nS1M2ouf1TZXJ2aWNlLnN0b3BTZWxmKCm3vbeou/LV31NlcnZpY2Uuc3RvcFNlbGZSZXN1bHQoKbe9t6jAtM2j1rnX1Ly6o6zWu9KqtffTw9K7tM5zdG9wU2VydmljZSgpt723qLHjv8nS1M2j1rm3/s7xo6zO3sLbtffTw8HLtuDJ2bTOtcTG9Lavt/7O8be9t6ihozwvcD4KPHA+Cjxicj4KPC9wPgo8cD4KPHN0cm9uZz7LxKGiILT6wuvKvsD9PC9zdHJvbmc+PC9wPgo8cD4KPC9wPgo8cD4KPC9wPgo8cD4Ko6gxo6k8c3Ryb25nPnN0YXJ0U2VydmljZcq+wP08L3N0cm9uZz48L3A+CjxwPgq5pLPMsPzAqMG9uPbA4KO6TWFpbkFjdGl2aXR5LmphdmGjrFBsYXlTZXJ2aWNlLmphdmE8L3A+CjxwPgrG5NbQo7pNYWluQWN0aXZpdHkuamF2Ybao0uXBy8G9uPawtMWlo6y31rHwv9jWxtL0wNa1xLKlt8XT682j1rmhozwvcD4KPHA+CtPDc3RhcnRTZXJ2aWNlus1zdG9wU2VydmljZc3qs8lBY3Rpdml0edPrU2VydmljZdauvOS1xMfQu7ujrMb0tq9TZXJ2aWNl0tS8sMihz/tTZXJ2aWNlo6zI57n7srvTw7C0xaWjrL/J0tTU2kFjdGl2aXR5tcRPbkNyZWF0ZbrNT25EZXN0cnB5wO/D5sb0tq+6zcihz/tTZXJ2aWNlPC9wPgo8cD4KQW5kcm9pZE1hbmlmZXN0LnhtbM7EvP7I58/Co7o8L3A+CjxwcmUgY2xhc3M9"brush:java;">
layout²¼¾ÖÎļþactivity_main.xml
MainActivity.java´úÂëÈçÏ£º
package com.example.hellowendy;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity implements OnClickListener {/** Called when the activity is first created. */Button buttonOn, buttonOff;String TAG = "ServiceActivity";@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);buttonOn = (Button) findViewById(R.id.button_on);buttonOff = (Button) findViewById(R.id.button_off);buttonOn.setOnClickListener(this);buttonOff.setOnClickListener(this);Log.v(TAG, "ActivityonCreate");}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case (R.id.button_on):Log.v(TAG, "ActivitystartService");this.startService(new Intent(this, PlayService.class));// startService(new Intent(this, PlayService.class));break;case (R.id.button_off): {Log.v(TAG, "ActivitystopService");this.stopService(new Intent(this, PlayService.class));// stopService(new Intent(this, PlayService.class));}break;default:break;}}@Overrideprotected void onStop() {// TODO Auto-generated method stubsuper.onStop();Log.v(TAG, "ActivityonStop");}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubLog.v(TAG, "ActivityonDestroy");super.onDestroy();}}
PlayService.java´úÂëÈçÏ£º
/** * *//** * @author Administrator * */package com.example.hellowendy;import java.io.IOException;import android.app.Service;import android.content.Intent;import android.media.MediaPlayer;import android.os.IBinder;import android.util.Log;import android.widget.TextView;import android.widget.Toast;public class PlayService extends Service {String TAG = "ServiceActivity";MediaPlayer mediaPlayer;@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();Toast.makeText(this, "Play Service Created", Toast.LENGTH_LONG).show();Log.v(TAG, "ServiceonCreate");//TextView txtview;//txtview = (TextView) findViewById(R.id.txt);//´Ó±¾µØ×ÊÔ´ÖлñÈ¡µÄ¸èÇúcong.mp3, ¡°´Ò´ÒÄÇÄꡱ,cong.mp3Ŀ¼ÊÇhellowendy -> res ->raw -> cong.mp3mediaPlayer = MediaPlayer.create(this, R.raw.cong);}@Overridepublic void onStart(Intent intent, int startId) {// TODO Auto-generated method stub//super.onStart(intent, startId);//super.onStart();/* * //¿ÉÒÔÔÚOnCreateÀïÃæ´´½¨ÓëÒôÀÖµÄÁ´½Ó£¬Ò²¿ÉÒÔÔÚOnStartÀïÃæ´´½¨ mediaPlayer = * MediaPlayer.create(this, R.raw.test); */Toast.makeText(this, "Play Service onStart", Toast.LENGTH_LONG).show();Log.v(TAG, "ServiceonStart");mediaPlayer.start();}@Overridepublic void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();Toast.makeText(this, "Play Service Stopped", Toast.LENGTH_LONG).show();Log.v(TAG, "ServiconDestroy");mediaPlayer.stop();}}