zoukankan      html  css  js  c++  java
  • Android 通过接口的方式去调用服务里面的方法

    public class MainActivity extends AppCompatActivity {
        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);
        }
     
        //点击按钮调用服务里面banzheng的方法
        public void click(View v) {
            myBinder.callBanZheng(100000);
        }
     
        //监视服务的状态
        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();
        }
    }
    public class DemoService extends Service {
        private static final String TAG = "jojp";
        public DemoService() {
        }
        // 把我定义的中间人对象返回
        @Override
        public IBinder onBind(Intent intent) {
            // TODO: Return the communication channel to the service.
    //        throw new UnsupportedOperationException("Not yet implemented");
            return new MyBinder();
        }
     
        //banzheng的方法
        public void banZheng(int money) {
            if (money > 1000) {
                Toast.makeText(getApplicationContext(), "banZheng", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(getApplicationContext(), "banZhengFail", Toast.LENGTH_SHORT).show();
            }
        }
     
        //打麻将的方法
        public void playMaJiang() {
            Log.d(TAG, "playMaJiang: ");
        }
        //洗桑拿的方法
        public void sangNa() {
            Log.d(TAG, "sangNa: ");
        }
     
        private class MyBinder extends Binder implements Iservice{
            @Override
            public void callBanZheng(int money) {
                //调用banzheng的方法
                banZheng(money);
            }
            public void callPlayMaJiang() {
                //调用playMaJiang的方法
                playMaJiang();
            }
            public void callSangNa() {
                //调用洗桑拿的方法
                sangNa();
            }
        }
    }
    public interface Iservice {
        //把领导想暴露的方法都定义在接口里
        public void callBanZheng(int money);
    }
  • 相关阅读:
    sqlserver 2000备份文件还原到sqlserver 2005(2008)
    .dll文件有什么用?
    汇编片段
    以POST方式请求数据的Ajax实现方式
    有两个数据据服务器上有两个一样结构的数据库,现想将一服务器上的一数据库里的一个表的一部份记录插入到另一服务器上的一数据库的一表中.
    揭开ASP.NET中Cookie编程的奥秘(2)
    商城网店初步完成了,很多不足
    ajax上传(xmlhttp上传文件突破大小限制)
    查询优化
    金山词霸”屏幕取词技术揭密(讨论稿)
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/9542256.html
Copyright © 2011-2022 走看看