标签:Andriod Service
允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://52android.blog.51cto.com/2554429/499548
Service组件可以看作是没有界面的Activity组件,二者地位相同。它是运行在系统后台的一种服务,一般处理耗时较长的操作,不与用户进行交互。和其他组件一样,Service组件同样需要在AndroidManifest.xml中声明,在<service>中可以添加过滤器指定如何如何访问该Service。
- <service android:name="MyService">
- <intent-filter>
- <action android:name="com.amaker.ch07.app.action.MY_SERVICE"/>
- </intent-filter>
- </service>
|
Service和整个应用程序在同一个进程和同一个线程中,并非单独的进程和线程。它的运行会阻塞其他操作。
Service的用处有两点,其一是在后台运行耗时较长且不与用户进行交互的操作;其二是通过绑定,与其他进程进行通信。
1. 创建Service
首先需要定义一个继承于Service的类,然后覆盖其中的的方法即可。代码如下:
- public class MyService extends Service{
-
-
- public IBinder onBind(Intent intent) {
- Log.i("SERVICE", "onBind..............");
- Toast.makeText(MyService.this, "onBind..............", Toast.LENGTH_LONG).show();
- return null;
- }
-
- public void onCreate() {
- Log.i("SERVICE", "onCreate..............");
- Toast.makeText(MyService.this, "onCreate..............", Toast.LENGTH_LONG).show();
- }
-
- public void onStartCommond(Intent intent, int flag, int startId) {
- Log.i("SERVICE", "onStart..............");
- Toast.makeText(MyService.this, "onStart..............", Toast.LENGTH_LONG).show();
- }
-
- public void onDestroy() {
- Log.i("SERVICE", "onDestroy..............");
- Toast.makeText(MyService.this, "onDestroy..............", Toast.LENGTH_LONG).show();
- }
- }
|
2. 启动和停止Service
一旦定义好一个Service,就可以在其他组件中启动并停止该Service了。代码如下:
-
- Intent intent = new Intent();
-
- intent.setAction("com.amaker.ch07.app.action.MY_SERVICE");
-
- startService(intent);
-
-
-
- Intent intent = new Intent();
-
- intent.setAction("com.amaker.ch07.app.action.MY_SERVICE");
-
- stopService(intent);
-
|
3. 绑定一个已经存在的Service
绑定Service和启动它的区别在于,绑定服务一般用于远程调用。如果服务没有被创建,首先会调用onCreate方法,但是不会调用onStrart方法,而是调用onBind返回客户端一个IBind接口。
绑定服务的代码如下:
-
- private ServiceConnection conn = new ServiceConnection() {
- @Override
- public void onServiceConnected(ComponentName name, IBinder service) {
- Log.i("SERVICE", "连接成功!");
- Toast.makeText(MainActivity.this, "连接成功!", Toast.LENGTH_LONG).show();
- }
- @Override
- public void onServiceDisconnected(ComponentName name) {
- Log.i("SERVICE", "断开连接!");
- Toast.makeText(MainActivity.this, "断开连接!", Toast.LENGTH_LONG).show();
- }
- };
-
-
- private OnClickListener bindListener = new OnClickListener() {
- @Override
- public void onClick(View v) {
-
- Intent intent = new Intent();
-
- intent.setAction("com.amaker.ch07.app.action.MY_SERVICE");
-
-
- bindService(intent, conn, Service.BIND_AUTO_CREATE);
- }
- };
-
-
-
- private OnClickListener unBindListener = new OnClickListener() {
- @Override
- public void onClick(View v) {
-
- Intent intent = new Intent();
-
- intent.setAction("com.amaker.ch07.app.action.MY_SERVICE");
-
- unbindService(conn);
- }
- };
-
- }
|
本文出自 “我的Android开发志” 博客,请务必保留此出处http://52android.blog.51cto.com/2554429/499548