Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Service組件(1)

Android Service組件(1)

編輯:關於Android編程

android service 和其他服務一樣,並沒有實際運行的界面,它運行在android 後台。一般通過service為應用程序提供服務(比如,從Internet下載文件,控制音樂播放器等)。Service的生命周期要比activity簡單的多,它只有三個階段(創建服務、開始服務、銷毀服務)。下面通過具體事例講解android的service組件。   1.創建android工程   在Eclipse中創建android工程 android_service_one   2.創建Service   在android工程中,創建包com.example.service,並添加方法MyService。該方法繼承與Service。該類用來展示服務的三個生命周期。         復制代碼 package com.example.service;   import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.util.Log;   /*  *   */ public class MyService extends Service {       @Override     public IBinder onBind(Intent intent) {         // TODO Auto-generated method stub         return null;     }     //第一次打開時調用     public void onCreate()     {         Log.d("MyService", "onCreate");         super.onCreate();     }     //停止時調用     public void onDestory()     {         Log.d("MySerVice", "onDestory");         super.onDestroy();     }     //開始時調用     public void onStart(Intent intent,int startId)     {         Log.d("MyService", "onStart");         super.onStart(intent, startId);     } } 復制代碼 3.調用服務   在android 活動組件中調用剛剛建立的服務,調用之前需要在AndroidManifest.xml中對該服務進行配置。通過<service></service>來配置服務組件。   1   <service android:enabled="true" android:name="com.example.service.MyService"></service> 服務配置完成以後,可以調用該服務。服務與activity之間的交互依然通過Intent來進行通信。啟動服務通過startservice(intent),停止服務通過stopservice(Intent intent)來完成。   Intent的聲明:Intent Intent=new Intent(this,MyService.class);     復制代碼  1     public void onClick(View v) {  2         // TODO Auto-generated method stub  3         switch(v.getId())  4         {  5         case R.id.button1:  6             startService(serviceintent);  7             break;  8         case R.id.button2:  9             stopService(serviceintent); 10             break; 11         } 12     } 復制代碼     4.Service與Activity綁定   Service與Activity綁定,當Activity啟動時,服務自動啟動。當Activity被銷毀時,服務也被銷毀。這裡需要在MyService中重寫 onBind、onRebind和onUnbind等幾個方法。     復制代碼  1 package com.example.service;  2   3 import android.app.Service;  4 import android.content.Intent;  5 import android.os.Binder;  6 import android.os.IBinder;  7 import android.util.Log;  8   9 /* 10  *  11  */ 12 public class MyService extends Service { 13  14     private MyBinder myBinder= new MyBinder(); 15      16     @Override 17     //成功綁定時調用該方法 18     public IBinder onBind(Intent intent) { 19         // TODO Auto-generated method stub 20         Log.d("MyService", "onBind"); 21         return myBinder; 22     } 23      24     //重新綁定時調用該方法 25     public void onRebind(Intent intent) 26     { 27         Log.d("MyService", "onRebind"); 28         super.onRebind(intent); 29     } 30      31     //解除綁定時調用該方法 32     public void onUnBind(Intent intent) 33     { 34         Log.d("MyService", "onUnbind"); 35         super.onUnbind(intent); 36     } 37     //第一次打開時調用 38     public void onCreate() 39     { 40         Log.d("MyService", "onCreate"); 41         super.onCreate(); 42     } 43     //停止時調用 44     public void onDestory() 45     { 46         Log.d("MySerVice", "onDestory"); 47         super.onDestroy(); 48     } 49     //開始時調用 50     public void onStart(Intent intent,int startId) 51     { 52         Log.d("MyService", "onStart"); 53         super.onStart(intent, startId); 54     } 55      56     //綁定類 57     public class MyBinder extends Binder 58     { 59         //返回服務實例 60         public MyService getService() 61         { 62             return MyService.this; 63         } 64     } 65 } 復制代碼 5.調用服務   在Activity中聲明服務變量 Myservice myService,和聲明ServiceConnection連接變量。綁定變量調用bindService(serviceintent, conn, Context.BIND_AUTO_CREATE);   解除綁定調用,unbindService(ServiceConnection).     復制代碼  1     Intent serviceintent;  2     private MyService myService;  3     private ServiceConnection conn=new ServiceConnection() {  4           5         @Override  6         public void onServiceDisconnected(ComponentName name) {  7             // TODO Auto-generated method stub  8             myService=null;  9             Toast.makeText(MainActivity.this, "服務連接失敗", Toast.LENGTH_LONG).show(); 10         } 11          12         @Override 13         public void onServiceConnected(ComponentName name, IBinder service) { 14             // TODO Auto-generated method stub 15             myService=((MyService.MyBinder)service).getService(); 16             Toast.makeText(MainActivity.this, "服務連接成功", Toast.LENGTH_LONG).show(); 17         } 18     }; 復制代碼
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved