开启服务的方式:(2)绑定式开启服务

来源:互联网 发布:铜陵网络买花花店 编辑:程序博客网 时间:2024/05/22 06:45
public class MainActivity extends Activity implements OnClickListener {    private Button button1, button2, button3;    private Intent service;    private MyIBinder service1;    private ServiceConnection conn = new ServiceConnection() {        public void onServiceDisconnected(ComponentName name) {            Log.i("myTag", "与service没有连接成功--->onServiceDisconnected");        }        public void onServiceConnected(ComponentName name, IBinder service) {            MainActivity.this.service1 = (MyIBinder) service;            Log.i("myTag", "与service连接成功--->onServiceConnected");            Log.i("myTag", "service.toString()---->" + service.toString());        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        button1 = (Button) findViewById(R.id.button1);        button2 = (Button) findViewById(R.id.button2);        button3 = (Button) findViewById(R.id.button3);        button1.setOnClickListener(this);        button2.setOnClickListener(this);        button3.setOnClickListener(this);    }    public void onClick(View v) {        switch (v.getId()) {        case R.id.button1:            service = new Intent(MainActivity.this, MyBindService.class);            /**             * 参数一:该参数通过intent指定要启动的service             *              * 参数二:是一个ServiceConnection对象,用于监听访问者与service之间的连接情况             * ,如果连接成功调用onServiceConnected(ComponentName name, IBinder             * service)方法, 如果连接不成功调用onServiceDisconnected(ComponentName name)方法             *              * 参数三:指定绑定是是否自动创建service             * (如果service还未创建),该参数可以指定为0(不自动创建),或者BIND_AUTO_CREATE(自动创建)             * */            bindService(service, conn, BIND_AUTO_CREATE);            break;        case R.id.button2:            unbindService(conn);            break;        case R.id.button3:            service1.geiQianBanShi();            break;        }    }}
public class MyBindService extends Service {    private MyIBinder myIBinder = new MyIBinder();    // 绑定服务时调用此方法    public IBinder onBind(Intent intent) {        Log.i("myTag", "bind serviec--->onBind");        Log.i("myTag", "myIBinder.tostring--->" + myIBinder.toString());        return myIBinder;           }    // 解绑服务时调用此方法    public boolean onUnbind(Intent intent) {        Log.i("myTag", "bind serviec--->onUnbind");        return super.onUnbind(intent);    }    public void onCreate() {        Log.i("myTag", "bind serviec--->onCreate");        super.onCreate();    }    public int onStartCommand(Intent intent, int flags, int startId) {        Log.i("myTag", "bind serviec--->onStartCommand");        return super.onStartCommand(intent, flags, startId);    }    public void onDestroy() {        Log.i("myTag", "bind serviec--->onDestroy");        super.onDestroy();    }    /**     * 服务的方法     *      * */    public void banShi(int money) {        if (money < 1000) {            Log.i("myTag", "--->钱不够");        } else {            Log.i("myTag", "--->事情办好了");        }    }    /**     * 创建一类,实现了IBinder接口,将数据返回给activity     * */    class MyIBinder extends Binder {        public void geiQianBanShi() {            banShi(500);        }    }}
原创粉丝点击