android 绑定服务
来源:互联网 发布:linux dns配置 ubuntu 编辑:程序博客网 时间:2024/06/05 06:10
如果我们想调用服务里面的方法,这个是不允许的,我们可以通过绑定服务间接地调用服务的serviceConnection实现类获取服务开启和停止的消息。当服务成功被绑定的时候会执行OnBind方法,返回一个IBinder的代理对象,代理对象里面有个方法可以间接的调用到服务的方法。
Activity类:
public class MainActivity extends Activity {private Button bindButton;private Button unBindButton;private Button serviceMethod;private IService binder;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);bindButton = (Button) findViewById(R.id.button1);unBindButton = (Button) findViewById(R.id.button2);serviceMethod = (Button) findViewById(R.id.button3);// 绑定服务bindButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, TestService.class);bindService(intent, new ServiceConnections(), BIND_AUTO_CREATE);}});// 解除绑定unBindButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, TestService.class);unbindService(new ServiceConnections());}});// 调用服务的方法serviceMethod.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {binder.classInServiceMethod();}});}class ServiceConnections implements ServiceConnection {// 当服务成功绑定后调用该方法@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {binder = (IService) service;}@Overridepublic void onServiceDisconnected(ComponentName name) {}}}
Service类:
public class TestService extends Service {@Overridepublic IBinder onBind(Intent intent) {// 服务成功绑定,返回一个代理对象return new MyBinder();}/** * 为什么要定义成private呢,安全起见,只能让他调用接口中的方法 * * @author Administrator * */private class MyBinder extends Binder implements IService {// 代理人间接地调用服务的方法@Overridepublic void classInServiceMethod() {serviceMethod();}}// 服务里面的方法private void serviceMethod() {Toast.makeText(getApplicationContext(), "我是服务里面的方法,你不能直接调用我 ", 1).show();}@Overridepublic void onCreate() {System.out.println("服务创建了");super.onCreate();}@Overridepublic void onDestroy() {System.out.println("服务销毁了");super.onDestroy();}@Overridepublic boolean onUnbind(Intent intent) {System.out.println("服务解除了绑定");return super.onUnbind(intent);}}
记住配置service:
<service android:name="com.alan.bindservice.TestService" ></service>
布局就是三个按钮而已,还有一个就是IService接口,里面就只有一个方法。这样就实现了调用服务里面的方法 。
0 0
- Android 绑定类型服务---绑定服务
- Android 绑定类型服务---绑定服务
- Android 绑定类型服务---绑定服务
- Android远程服务绑定
- android 绑定服务
- android 绑定远程服务
- Android -- 绑定服务
- 7.1Android服务绑定
- Android 之绑定服务
- Android-绑定服务
- Android -- 绑定服务
- Android 绑定服务
- Android 绑定类型服务---简介
- Android 绑定类型服务---简介
- android AIDL绑定服务使用
- Android入门:绑定本地服务
- android - Bound Services 绑定服务
- Android入门:绑定本地服务
- undefined symbol: _ZN9QListData11detach_growEPii
- Android即时通信软件设计(一)(网络通信)
- 高斯函数在计算机视觉中的应用
- ZOJ3640 Help Me Escape(概率dp)
- ..
- android 绑定服务
- Labview学习之程序Web发布
- oracle 创建job定时执行任务
- java 初始化顺序
- Java解析HTML之HTMLParser使用与详解
- VMware的“桥接”、“NAT”、“Host-only”上网方式的区别
- NOJ [1314] Brave Sword [1416] Clear Up
- 让你的Delphi非窗口自定义控件接收Windows消息
- 组合 问题