本地服务-服务于访问者在同一进程
来源:互联网 发布:三菱fx编程代码 编辑:程序博客网 时间:2024/06/05 01:15
之前通过startService() && stopService()启动关闭服务,此方法适用于访问者与服务没有交互的情况下
bindService() && unbindService() 启动关闭服务,适用于服务与访问者之间调用方法或传递参数
Context.bindService()启动服务,在服务未被创建时,先调用服务onCreate()方法,接着调用onBind()方法 这时访问者与服务绑定在一起
如果访问者与服务进行通信,onBind()方法必须返回Ibind对象,
unbindService()解除绑定-该方法会导致系统调用服务的onUnbind()----> onDestroy()方法
项目需求-根据学号查询学生名称
StuMainActivity.java
package com.example.studentquery;import android.app.Activity;import android.content.ComponentName;import android.content.Intent;import android.content.ServiceConnection;import android.os.Bundle;import android.os.IBinder;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;public class StuMainActivity extends Activity {private Button but;private EditText editText;private TextView tex2;private ServiceConnection conn = new StuSerConnection();private IStuBinder iStuBinder;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_stu_main);but = (Button) findViewById(R.id.button1);editText = (EditText) findViewById(R.id.editText1);tex2 = (TextView) findViewById(R.id.textView2);but.setOnClickListener(new ButListener());//bind serivceIntent service = new Intent(this,StuService.class);bindService(service, conn, BIND_AUTO_CREATE);}private class StuSerConnection implements ServiceConnection{public void onServiceConnected(ComponentName name, IBinder service) {iStuBinder = (IStuBinder)service;}public void onServiceDisconnected(ComponentName name) {iStuBinder = null;}}//activity 实例被摧毁时解除服务绑定@Overrideprotected void onDestroy() {unbindService(conn);super.onDestroy();}private class ButListener implements OnClickListener{@Overridepublic void onClick(View v) {String number = editText.getText().toString();//1.根据学号通过服务访问数据库中对应的代码String StuName = iStuBinder.QueryStu(Integer.valueOf(number));tex2.setText(StuName);}}}StuService.java 服务类
package com.example.studentquery;import android.app.Service;import android.content.Intent;import android.os.Binder;import android.os.IBinder;public class StuService extends Service{private String[] names = {"aa","bb","cc","dd"};private IBinder ibinder = new StuBinder();public String query(int number){ if(number>0 && number<names.length){ return names[number-1]; }return null;}//返回給访问者绑定的IBinder@Overridepublic IBinder onBind(Intent arg0) {return ibinder;}//构造一个class 继承 Binder,继承 IStuBinder 并实现接口private class StuBinder extends Binder implements IStuBinder{public String QueryStu(int number) {//通过ibinder 对象掉用服务中方法return query(number);}}}
<span style="color:#cc0000;">IStuBinder.java<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> 接口服务</span></span>
package com.example.studentquery;public interface IStuBinder {public String QueryStu(int number);}
0 0
- 本地服务-服务于访问者在同一进程
- 服务于进程
- 防火墙 windows 错误1079 此服务的账户不同于运行于同一进程中的其他服务账户
- 一个或多个音频服务未运行 win7 错误1079:此服务的账户不同于运行于同一进程上的其他服务账户
- 解决:windows无法启动windows audio服务{位于本地计算机上}错误1079,此服务的账户不同于运行同一进程上的其他服务的账户
- 建立能与访问者相互通信的本地服务
- 建立能和访问者相互通信的本地服务
- 如何解决win7系统错误1079:此服务的帐户不同于运行于同一进程上的其他服务的帐户
- 在管理工具的服务中启动mysql服务时都会在中途报错。内容为:在 本地计算机 无法启动mysql服务 错误1067:进程意外中止。
- 服务(service)-----本地服务
- 在本地计算机无法启动MySQL服务。错误1067:进程意外终止
- 在本地计算机无法启动MYSQL服务错误1067进程意外终止
- xp sp3 在本地计算机无法启动 distributed transaction coordinator服务,错误1067 进程意外终止
- AngularJs服务于自定义服务
- 在同一台机器上运行多个 MySQL 服务
- 在同一台机器上运行多个 MySQL 服务
- 在同一台电脑部署多个Tomcat服务
- Android--建立能与访问者进行相互通信的本地服务
- hdoj.1390 Binary Numbers 20140821
- URAL 1223. Chernobyl’ Eagle on a Roof
- BS组-培训-笔记20140821
- 解析AFNetWorking 网络框架(二)
- Session原理和Tomcat实现分析
- 本地服务-服务于访问者在同一进程
- HDU 2571 命运
- Java线程面试题Top50
- 【HDU】4973 A simple simulation problem. 线段树
- 【转】Linux系统调用列表
- toHexString(b[n] & 0XFF)中0XFF的作用
- Valid Parentheses
- 别名函数之die()与exit()的真正区别
- poj 1404 dp(手机按键编码最小)