重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇文章为大家展示了怎么在Android中实现Service与Activity的通信,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
创新互联建站客户idc服务中心,提供大邑服务器托管、成都服务器、成都主机托管、成都双线服务器等业务的一站式服务。通过各地的服务中心,我们向成都用户提供优质廉价的产品以及开放、透明、稳定、高性价比的服务,资深网络工程师在机房提供7*24小时标准级技术保障。第一种方式:通过MyBinder方式调用Service方法
MainActivity
public class MainActivity extends Activity { private MyConn conn; private MyBinder myBinder;//我定义的中间人对象 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent intent = new Intent(this,BanZhengService.class); //连接服务 conn = new MyConn(); bindService(intent, conn, BIND_AUTO_CREATE); } //点击按钮调用服务里面办证的方法 public void click(View v) { myBinder.callBanZheng(10000000); } //监视服务的状态 private class MyConn implements ServiceConnection{ //当服务连接成功调用 @Override public void onServiceConnected(ComponentName name, IBinder service) { //获取中间人对象 myBinder = (MyBinder) service; } //失去连接 @Override public void onServiceDisconnected(ComponentName name) { }} @Override protected void onDestroy() { //当activity 销毁的时候 解绑服务 unbindService(conn); super.onDestroy(); } }
BanZhengService
public class BanZhengService extends Service { //把我定义的中间人对象返回 @Override public IBinder onBind(Intent intent) { return new MyBinder(); } //办证的方法 public void banZheng(int money){ if (money>1000) { Toast.makeText(getApplicationContext(), "我是领导 把证给你办了", 1).show(); }else { Toast.makeText(getApplicationContext(), "这点钱 还想办事....", 1).show(); } } //[1]定义中间人对象(IBinder) public class MyBinder extends Binder{ public void callBanZheng(int money){ //调用办证的方法 banZheng(money); } }}
第二种方式:通过接口Iservice调用Service方法
MainActivity
public class MainActivity extends Activity { private MyConn conn; private Iservice myBinder;//我定义的中间人对象 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent intent = new Intent(this,DemoService.class); //连接服务 conn = new MyConn(); bindService(intent, conn, BIND_AUTO_CREATE); } //点击按钮调用服务里面办证的方法 public void click(View v) { myBinder.callBanZheng(10000000); // myBinder.callPlayMaJiang(); // myBinder.callXiSangNa(); } //监视服务的状态 private class MyConn implements ServiceConnection{ //当服务连接成功调用 @Override public void onServiceConnected(ComponentName name, IBinder service) { //获取中间人对象 myBinder = (Iservice) service; } //失去连接 @Override public void onServiceDisconnected(ComponentName name) { } } @Override protected void onDestroy() { //当activity 销毁的时候 解绑服务 unbindService(conn); super.onDestroy(); } }
DemoService
public class DemoService extends Service { //把我定义的中间人对象返回 @Override public IBinder onBind(Intent intent) { return new MyBinder(); } //办证的方法 public void banZheng(int money){ if (money>1000) { Toast.makeText(getApplicationContext(), "我是领导 把证给你办了", 1).show(); }else { Toast.makeText(getApplicationContext(), "这点钱 还想办事....", 1).show(); } } //打麻将的方法 public void playMaJiang(){ System.out.println("陪领导打麻将"); } //洗桑拿的方法 public void 洗桑拿(){ System.out.println("陪领导洗桑拿"); } //[1]定义中间人对象(IBinder) private class MyBinder extends Binder implements Iservice{ public void callBanZheng(int money){ //调用办证的方法 banZheng(money); } public void callPlayMaJiang(){ //调用playMaJiang 的方法 playMaJiang(); } public void callXiSangNa(){ //调用洗桑拿的方法 洗桑拿(); }}}
接口Iservice
public interface Iservice { //把领导想暴露的方法都定义在接口里 public void callBanZheng(int money); // public void callPlayMaJiang(); }
上述内容就是怎么在Android中实现Service与Activity的通信,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。