启动形式的服务是比较简单的一种服务创建形式,那么如何来创建呢?

  • 马上学Android 033 - Android Service入门到精通02 - 创建启动形式的服务

和其他组件类似,需要创建一个继承自Service的类并重写onBind()方法,具体代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

public class StartService extends Service {

private static final String TAG = "StartService";

@Override
public void onCreate() {
super.onCreate();
Log.i(TAG,"StartService->onCreate() Thread ID: "+Thread.currentThread().getId());
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.w(TAG,"StartService->StartCommand()");
return super.onStartCommand(intent, flags, startId);
}

@Override
public void onDestroy() {
Log.e(TAG,"StartService->onDestroy()");
super.onDestroy();
}

@Override
public IBinder onBind(Intent intent) {
return null;
}
}

有了服务之后,需要在AndroidManifest.xml进行注册,当然最少需要指定Service名称属性。

1
2
3
<service android:name="com.chen.service.StartService">

</service>

另外在Activity中需要实现启动和停止按钮的响应函数,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

this.findViewById(R.id.btnStartService).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//启动服务
Intent intent = new Intent(StartServiceActivity.this, StartService.class);
Log.i("StartServiceActivity", "StartServiceActivity - > " + Thread.currentThread().getId());
startService(intent);
}
});

this.findViewById(R.id.btnStopService).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//停止服务
Intent intent = new Intent(StartServiceActivity.this, StartService.class);
stopService(intent);
}
});

和启动Activity和BroadcastReceiver一样,启动和停止Service也需要通过intent来实现。