基本步骤
1、构造查询界面:一个输入框 + 一个按钮 + 一个显示框
2、在Activity的onCreate()方法:添加按钮点击事件
3、定义一个数据查询接口IStudent的一个方法 queryStudent()
4、新建Service子类StudentService,在其内部定义一个内部类StundentBinder,
StundentBinder实现IStudent并继承Binder。 >>>>此步是重中之重,非常关键。
5、实现StudentService的onBind(),和具体的查询方法
6、在Activity中新建一个内部类,实现ServiceConnection接口,
添加未实现的方法onServiceConnected和onServiceDisconnected(暂不添加处理逻辑)
7、在Activity中添加IStundent的属性iStundent,在方法onServiceConnected和onServiceDisconnected进行赋值和销毁
8、在Activity中添加ServiceConnection的属性conn,并在onCreate()中实现bindService(),
conn是bindService()所必须的参数。
9、在点击事件处理逻辑中,调用iStundent的查询方法,从服务中获得数据。
10、在Activity中覆写onDestroy,调用unbindService()
===================================================================
下面我们附加上代码:
1、构造查询界面:一个输入框 + 一个按钮 + 一个显示框
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/studentno" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button" android:id="@+id/button" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/resultView" />
2、在Activity的onCreate()方法:添加按钮点击事件
resultView = (TextView) this.findViewById(R.id.resultView); studentno = (EditText) this.findViewById(R.id.studentno); Button button = (Button) this.findViewById(R.id.button); button.setOnClickListener(new ButtonClickListener());
3、定义一个数据查询接口IStudent的一个方法 queryStudent()
public interface IStundent { public String queryStudent(int no); }
4、新建Service子类StudentService,在其内部定义一个内部类StundentBinder,
StundentBinder实现IStudent并继承Binder。 >>>>此步是重中之重,非常关键。
public class StudentService extends Service{ private class StundentBinder extends Binder implements IStundent{ public String queryStudent(int no) { return query(no); } } }
5、实现StudentService的onBind(),和具体的查询方法
public String query(int no){ String[] names = {"张飞","李小龙","赵薇"}; if(no>0 && no<4){ return names[no - 1]; } return null; } @Override public IBinder onBind(Intent intent) { return new StundentBinder(); }
6、在Activity中新建一个内部类,实现ServiceConnection接口,
添加未实现的方法onServiceConnected和onServiceDisconnected(暂不添加处理逻辑)
private class StudentServiceConnection implements ServiceConnection{ public void onServiceConnected(ComponentName name, IBinder service) { } public void onServiceDisconnected(ComponentName name) { } }
7、在Activity中添加IStundent的属性iStundent,在方法onServiceConnected和onServiceDisconnected进行赋值和销毁
private IStundent iStundent; public void onServiceConnected(ComponentName name, IBinder service) { iStundent = (IStundent)service; } public void onServiceDisconnected(ComponentName name) { iStundent = null; }
8、在Activity中添加ServiceConnection的属性conn,并在onCreate()中实现bindService(),
conn是bindService()所必须的参数。
private ServiceConnection conn = new StudentServiceConnection(); Intent intent = new Intent(this, StudentService.class); bindService(intent, conn, BIND_AUTO_CREATE);
9、在点击事件处理逻辑中,调用iStundent的查询方法,从服务中获得数据。
public void onClick(View v) { String no = studentno.getText().toString(); String name = iStundent.queryStudent(Integer.valueOf(no)); resultView.setText(name); }
10、在Activity中覆写onDestroy,调用unbindService()
protected void onDestroy() { unbindService(conn); super.onDestroy(); }
相关推荐
总结,`BindService`是Android中一种重要的Service使用方式,它提供了更灵活和高效的方式来与Service交互。在设计需要长时间运行并需要与UI组件通信的服务时,`BindService`是一个很好的选择。理解和熟练运用这个...
6. **服务的使用场景**:通常,使用`bindService()`适用于需要长时间与服务交互的情况,如音乐播放、数据同步等。而`startService()`则适用于执行一次性任务,任务完成后服务会自动停止。 7. **性能优化**:理解`...
总之,Android的bindService机制提供了灵活且强大的方式来连接和交互服务,尤其适用于需要长期运行和交互的任务。合理利用bindService,可以提高应用的效率和用户体验。在实际开发中,应根据需求选择启动服务的方式...
在Android应用开发中,服务(Service)是一种可以长时间在后台运行的组件,它不具有用户界面,主要用于执行长时间运行的任务,...理解和熟练掌握`bindService()`的使用,对于提升Android应用的性能和用户体验至关重要。
总结,`bindService()` 方法是实现 Activity 与 Service 之间交互的关键,适用于需要频繁通信或需要在特定时刻调用服务功能的场景。在实际开发中,理解并正确使用 `bindService()` 及其相关的生命周期和通信机制,...
在Android开发中,服务(Service)是四大组件之一,它在后台执行长时间运行的操作而不会与用户界面交互。本文将深入探讨"Android startService, bindService, Aidl service基础全"这一主题,按照学习顺序依次讲解`...
在Android应用开发中,服务(Service)是一种用于执行长时间运行操作而不与用户界面交互的组件。`bindService()`方法是启动服务的一种方式,它强调了客户端-服务器的交互模式,适用于那些需要与服务进行频繁、紧密...
在Android应用开发中,服务(Service)是一种用于执行长时间运行操作的组件,它不提供用户界面,但可以与其他组件交互。本篇文章将深入探讨`Context.bindService()`方法,它是连接到一个服务的主要途径,让我们详细...
总的来说,"BindService_Demo"这个示例将展示如何在Android应用中创建、启动和绑定Service,以及如何利用Service与Activity进行数据交换和控制,这是Android应用开发中不可或缺的一个环节。正确理解和运用这些知识点...
在Android应用开发中,`Service`是四大组件之一,它负责在后台执行长时间运行的操作,不与用户界面直接交互。本篇文章将详细讲解`StarService`(启动Service)和`BindService`(绑定Service)的区别、流程以及它们与...
2. **bindService()**: 如果我们需要与服务进行更紧密的交互,比如传递数据或控制服务的行为,可以使用bindService()。绑定服务后,Activity和服务之间会建立一个连接,可以通过IBinder接口进行通信。服务停止时,...
在Android系统中,Service是四大组件之一,它用于在后台长时间运行操作,不与用户界面直接交互。Service的三种交互方式主要包括:通过Intent启动(startService)、绑定(bindService)以及混合使用这两种方法。下面...
总结来说,Android中的Activity和Service通过绑定的方式可以实现高效、灵活的交互,提供丰富的功能。开发者需要理解它们各自的生命周期,掌握绑定和解绑的时机,以及选择合适的通信机制,以保证应用的稳定性和性能。...
在Android应用开发中,Activity和服务(Service)是两个核心组件,它们之间经常需要进行数据交互。Activity作为用户界面,提供与用户的交互,而Service则在后台执行长时间运行的任务,不依赖于用户界面。本篇文章将...
首先,`BindService`是Android系统提供的接口,允许一个组件(通常是Activity)与Service建立连接,进行数据交换和服务控制。相比于使用`startService()`,`bindService()`提供了更紧密的耦合,使得调用者可以直接...
总结起来,`bindService`主要用于需要与Service进行频繁交互和控制Service生命周期的应用场景,如在Activity和Service之间传输大量数据或执行复杂的操作。了解并熟练掌握`bindService`的使用,对于提升Android应用的...
在Android应用开发中,"Service下载"是指使用Service组件来执行后台下载任务,这通常用于在用户不直接交互的情况下从Web服务器获取数据。Service是一种没有用户界面的组件,它可以长时间运行,即使用户离开应用程序...