AndroidÏîĿ֮HomeHealth»ù´¡Ñ§Ï°1£ºService

來源:互聯網
上載者:User

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();}}







聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.