感觉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 }
SimpleService

相关文章: