绑定服务_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > 绑定服务

绑定服务

 2017/9/9 3:08:51  钻石VIP  程序员俱乐部  我要评论(0)
  • 摘要:绑定服务右边部分就是绑定服务的运行过程这样绑定的目的就是服务绑定者调用服务的方法,在我的样例里就是体现为服务访问者调用服务的show()方法来张效果图吧分析:1、第一步还是继承服务类1packagefry;23importjava.io.FileDescriptor;45importandroid.app.Service;6importandroid.content.Intent;7importandroid.os.Binder;8importandroid.os.IBinder
  • 标签:服务

绑定服务

右边部分就是绑定服务的运行过程

 

这样绑定的目的就是服务绑定者调用服务的方法,在我的样例里就是体现为服务访问者调用服务的show()方法

 

来张效果图吧

 

分析: 

1、第一步还是继承服务类

 1 package fry;
 2 
 3 import java.io.FileDescriptor;
 4 
 5 import android.app.Service;
 6 import android.content.Intent;
 7 import android.os.Binder;
 8 import android.os.IBinder;
 9 import android.os.IInterface;
10 import android.os.Parcel;
11 import android.os.RemoteException;
12 import android.util.Log;
13 
14 public class myService extends Service{
15 
16     /**
17      * 当绑定这个服务的时候调用
18      */
19     @Override
20     public IBinder onBind(Intent arg0) {
21         Log.d("fanfan", "onBind");
22         return new MyServiceBinder();
23     }
24     /**
25      * 当解除绑定这个服务的时候调用
26      */
27     @Override
28     public boolean onUnbind(Intent intent) {
29         Log.d("fanfan", "onUnbind");
30         return super.onUnbind(intent);
31     }
32     /**
33      * 当重新绑定这个服务的时候调用
34      */
35     @Override
36     public void onRebind(Intent intent) {
37         Log.d("fanfan", "onRebind");
38         super.onRebind(intent);
39     }
40     
41     /**
42      * service被创建后调用
43      */
44     @Override
45     public void onCreate() {
46         Log.d("fanfan", "onCreate");
47         super.onCreate();
48     }
49     
50     /**
51      * service被start后调用
52      */
53     @Override
54     public int onStartCommand(Intent intent, int flags, int startId) {
55         Log.d("fanfan", "onStartCommand");
56         return super.onStartCommand(intent, flags, startId);
57     }
58     
59     /**
60      * service被停止后调用
61      */
62     @Override
63     public void onDestroy() {
64         Log.d("fanfan", "onDestroy");
65         super.onDestroy();
66     }
67     
68     public void show(){
69         Log.d("fanfan", "show");
70     }
71     
72     /**
73      * 中介
74      * @author Fry
75      *
76      */
77     public class MyServiceBinder extends Binder{
78         public void show(){
79             myService.this.show();
80         }
81         
82     }
83     
84 
85 }

 

2、第二步的话就是配置服务

 1 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 2     package="com.example.bindservice"
 3     android:versionCode="1"
 4     android:versionName="1.0" >
 5 
 6     <uses-sdk
 7         android:minSdkVersion="8"
 8         android:targetSdkVersion="19" />
 9 
10     <application
11         android:allowBackup="true"
12         android:icon="@drawable/ic_launcher"
13         android:label="@string/app_name"
14         android:theme="@style/AppTheme" >
15         <activity
16             android:name="fry.MainActivity"
17             android:label="@string/app_name" >
18             <intent-filter>
19                 <action android:name="android.intent.action.MAIN" />
20 
21                 <category android:name="android.intent.category.LAUNCHER" />
22             </intent-filter>
23         </activity>
24         <activity android:name="fry.Activity01" android:exported="true"></activity>
25         
26         <service android:name="fry.myService">
27             
28         </service>
29         
30     </application>
31 
32 </manifest>

 

 

3、第三步就是绑定服务

 1 package fry;
 2 
 3 import com.example.bindservice.R;
 4 
 5 import fry.myService.MyServiceBinder;
 6 import android.app.Activity;
 7 import android.content.ComponentName;
 8 import android.content.Context;
 9 import android.content.Intent;
10 import android.content.ServiceConnection;
11 import android.os.Bundle;
12 import android.os.IBinder;
13 import android.util.Log;
14 import android.view.View;
15 
16 public class Activity01 extends Activity{
17     private ServiceConnection conn;
18     @Override
19     protected void onCreate(Bundle savedInstanceState) {
20         // TODO Auto-generated method stub
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.activity01);
23         conn=new ServiceConnection(){
24             /**
25              * 当服务访问者与服务绑定成功后调用
26              */
27             @Override
28             public void onServiceConnected(ComponentName arg0, IBinder service) {
29                 Log.d("fanfan", "onServiceConnected");
30                 MyServiceBinder binder=(MyServiceBinder)service;
31                 //实现了访问者调用服务者的方法
32                 binder.show();
33             }
34             /**
35              * 当service崩溃或被系统强制杀死后调用
36              */
37             @Override
38             public void onServiceDisconnected(ComponentName arg0) {
39                 Log.d("fanfan", "onServiceDisconnected");
40             }
41             
42         };
43     }
44     
45     public void onClick(View view){
46         Intent intent=new Intent();
47         intent.setClass(this, myService.class);
48         switch(view.getId()){
49         case R.id.btn_bind://绑定服务
50             bindService(intent, conn, Context.BIND_AUTO_CREATE);
51             break;
52         case R.id.btn_unbind://解绑服务
53             unbindService(conn);
54             break;
55         }
56     }
57 }

 

上一篇: 联发科8月营收创9个月来新高 市占年底将回升 下一篇: 没有下一篇了!
发表评论
用户名: 匿名