感觉Service有些纠结,不知道是不是因为书本的原因,书上的例子一个都没成功,看的也是晕头转向的。
一同提到了4个东西,前面嘛自然是那些巴拉巴拉的介绍,直接正题。
重点:
1.创建一个服务(Service);
Android中Service是一个很重要的元素之一,一个 “服务”涉及到Service类的继承,以及在AndroidManifest.xml中添加相关权限许可代码
再者就是 Service类的基础方法,onCreate(), onBind(), onStart(), onStartCommand(), onDestory()......
定义服务的名称很重要,因为这可以让你的服务在其他应用程序中被使用(创建,启动,停止,销毁).对于onStart() 和 onCommand() 方法在功能上是一致的,
只是前者( onStart() )在API L5以上就已经废除了, 取而代之的就是onStartCommand(), 一般后者( onStartCommand() )的默认实现是调用onStart(),并且返回某个值以便于与旧版本兼容。
声明周期:i> Context.StartService() 启动一个服务, onCreate() -> onStart() 或者 onCommand() -> Context.stopService() 或者 stopSelf() -> onDestory() .
ii> Context.bindService() 绑定一个服务, onCreate() -> onBind() -> Context.unbindService() 或者 onUnBind() -> stioSelf() -> onDestory().
看起来又长有复杂,当你自己去用的时候会清晰很多。
实例:
1 package com.qimu.service; 2 3 import android.app.Service; 4 import android.content.BroadcastReceiver; 5 import android.content.Context; 6 import android.content.Intent; 7 import android.content.IntentFilter; 8 import android.os.IBinder; 9 import android.os.SystemClock; 10 import android.util.Log; 11 12 public class QiMuService extends Service { 13 14 qimuReceiver recevier; 15 16 @Override 17 public IBinder onBind(Intent intent) { 18 19 return null; 20 } 21 22 private static final String DEBUG_TAG = "QiMu_DEBUG"; 23 24 public void onCreate() { 25 26 Log.v( DEBUG_TAG, "Service starting" ); 27 28 recevier = new qimuReceiver(); 29 30 super.onCreate(); 31 } 32 33 public void onStart( Intent intent, int startId ) { 34 35 System.out.println( "Start sucess" ); 36 37 IntentFilter filter = new IntentFilter(); 38 filter.addAction("com.qimu.QiMuService"); 39 registerReceiver( recevier, filter ); 40 41 for ( int i = intent.getIntExtra( "_start", 0 ); i < 100; i++ ) { 42 43 SystemClock.sleep( 200 ); 44 if ( i % 5 == 0) { 45 System.out.println( i ); 46 Intent activityCallBack = new Intent(); 47 activityCallBack.setAction( "com.qimu.MainActivity" ); 48 activityCallBack.putExtra( "_time", i ); 49 sendBroadcast( activityCallBack ); 50 } 51 } 52 53 onDestory(); 54 } 55 56 public int onStartCommand( Intent intent, int flags, int startId ) { 57 58 onStart(intent, startId); 59 return Service.START_REDELIVER_INTENT; 60 } 61 62 public void onDestory() { 63 64 super.onDestroy(); 65 } 66 67 public class qimuReceiver extends BroadcastReceiver { 68 69 @Override 70 public void onReceive(Context context, Intent intent) { 71 //...... 72 } 73 74 } 75 76 }