重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇文章为大家展示了怎么在Android中实现Service与Activity的通信,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
专注于为中小企业提供网站设计、成都网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业桃源免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了超过千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
第一种方式:通过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的通信,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。