`
zhengjj_2009
  • 浏览: 153150 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

项目的总结2、使用bindService()和界面交互数据

 
阅读更多

基本步骤

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

    总结,`BindService`是Android中一种重要的Service使用方式,它提供了更灵活和高效的方式来与Service交互。在设计需要长时间运行并需要与UI组件通信的服务时,`BindService`是一个很好的选择。理解和熟练运用这个...

    bindservice

    6. **服务的使用场景**:通常,使用`bindService()`适用于需要长时间与服务交互的情况,如音乐播放、数据同步等。而`startService()`则适用于执行一次性任务,任务完成后服务会自动停止。 7. **性能优化**:理解`...

    android bindservice

    总之,Android的bindService机制提供了灵活且强大的方式来连接和交互服务,尤其适用于需要长期运行和交互的任务。合理利用bindService,可以提高应用的效率和用户体验。在实际开发中,应根据需求选择启动服务的方式...

    bindService获取后台服务

    在Android应用开发中,服务(Service)是一种可以长时间在后台运行的组件,它不具有用户界面,主要用于执行长时间运行的任务,...理解和熟练掌握`bindService()`的使用,对于提升Android应用的性能和用户体验至关重要。

    bindService的demo

    总结,`bindService()` 方法是实现 Activity 与 Service 之间交互的关键,适用于需要频繁通信或需要在特定时刻调用服务功能的场景。在实际开发中,理解并正确使用 `bindService()` 及其相关的生命周期和通信机制,...

    Android startService bindService Aidl service基础全

    在Android开发中,服务(Service)是四大组件之一,它在后台执行长时间运行的操作而不会与用户界面交互。本文将深入探讨"Android startService, bindService, Aidl service基础全"这一主题,按照学习顺序依次讲解`...

    bindService开启服务

    在Android应用开发中,服务(Service)是一种用于执行长时间运行操作而不与用户界面交互的组件。`bindService()`方法是启动服务的一种方式,它强调了客户端-服务器的交互模式,适用于那些需要与服务进行频繁、紧密...

    方式二:Context.bindService()源码

    在Android应用开发中,服务(Service)是一种用于执行长时间运行操作的组件,它不提供用户界面,但可以与其他组件交互。本篇文章将深入探讨`Context.bindService()`方法,它是连接到一个服务的主要途径,让我们详细...

    BindService_Demo

    总的来说,"BindService_Demo"这个示例将展示如何在Android应用中创建、启动和绑定Service,以及如何利用Service与Activity进行数据交换和控制,这是Android应用开发中不可或缺的一个环节。正确理解和运用这些知识点...

    StarService和BindService

    在Android应用开发中,`Service`是四大组件之一,它负责在后台执行长时间运行的操作,不与用户界面直接交互。本篇文章将详细讲解`StarService`(启动Service)和`BindService`(绑定Service)的区别、流程以及它们与...

    本地服务和Activity交互

    2. **bindService()**: 如果我们需要与服务进行更紧密的交互,比如传递数据或控制服务的行为,可以使用bindService()。绑定服务后,Activity和服务之间会建立一个连接,可以通过IBinder接口进行通信。服务停止时,...

    Service的三种交互方式源码

    在Android系统中,Service是四大组件之一,它用于在后台长时间运行操作,不与用户界面直接交互。Service的三种交互方式主要包括:通过Intent启动(startService)、绑定(bindService)以及混合使用这两种方法。下面...

    android中activity和service的交互

    总结来说,Android中的Activity和Service通过绑定的方式可以实现高效、灵活的交互,提供丰富的功能。开发者需要理解它们各自的生命周期,掌握绑定和解绑的时机,以及选择合适的通信机制,以保证应用的稳定性和性能。...

    activity service 数据交互

    在Android应用开发中,Activity和服务(Service)是两个核心组件,它们之间经常需要进行数据交互。Activity作为用户界面,提供与用户的交互,而Service则在后台执行长时间运行的任务,不依赖于用户界面。本篇文章将...

    BindService绑定Service播放音乐

    首先,`BindService`是Android系统提供的接口,允许一个组件(通常是Activity)与Service建立连接,进行数据交换和服务控制。相比于使用`startService()`,`bindService()`提供了更紧密的耦合,使得调用者可以直接...

    Android中bindService基本使用方法概述

    总结起来,`bindService`主要用于需要与Service进行频繁交互和控制Service生命周期的应用场景,如在Activity和Service之间传输大量数据或执行复杂的操作。了解并熟练掌握`bindService`的使用,对于提升Android应用的...

    利用Service进行数据下载并存储,显示

    在Android应用开发中,"Service下载"是指使用Service组件来执行后台下载任务,这通常用于在用户不直接交互的情况下从Web服务器获取数据。Service是一种没有用户界面的组件,它可以长时间运行,即使用户离开应用程序...

Global site tag (gtag.js) - Google Analytics