• 23 服务的绑定启动Demo3


    这里写图片描述

    MainActivity.java

    package com.example.day23_service_demo3;
    
    import com.example.day23_service_demo3.MyService.MyBinder;
    
    import android.app.Activity;
    import android.content.ComponentName;
    import android.content.Context;
    import android.content.Intent;
    import android.content.ServiceConnection;
    import android.os.Bundle;
    import android.os.IBinder;
    import android.view.View;
    import android.widget.TextView;
    
    public class MainActivity extends Activity {
    
        private MyServiceConn conn;
        private TextView tv;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            conn = new MyServiceConn();
            tv = (TextView) findViewById(R.id.tv);
        }
    
        //绑定服务
        public void MyBindServiceClick(View v){
    
            Intent intent = new Intent(MainActivity.this, MyService.class);
    
            /**
             * 参数1:intent对象  指明绑定的组件
             * 参数2:当前服务的链接状态
             * 参数3:绑定服务的标记   :绑定且创建
             */
            bindService(intent, conn, Context.BIND_AUTO_CREATE);
    
        }
        //解除绑定服务
        public void MyUnBindServiceClick(View v){
            unbindService(conn);
        }
    
        /**
         * 创建服务的链接对象 MyServiceConn
         * @author sxy
         *
         */
        class MyServiceConn implements ServiceConnection{
    
            /**
             * 表示当前服务连接成功后回调此方法
             * 参数1:组件名称
             * 参数2:连接后onBind() 返回的对象
             */
            @Override
            public void onServiceConnected(ComponentName name, IBinder service) {
                // TODO Auto-generated method stub
                MyBinder myBinder = (MyBinder) service;
                //获取到Service对象
                MyService myService = myBinder.getService();
                int num = myService.getRandom();
    
                tv.setText(num+"");
            }
    
            /**
             * 失去连接回调此方法
             */
            @Override
            public void onServiceDisconnected(ComponentName name) {
                // TODO Auto-generated method stub
                conn = null;
            }
    
        }
    
    }
    

    MyService.java

    package com.example.day23_service_demo3;
    
    import android.app.Service;
    import android.content.Intent;
    import android.os.Binder;
    import android.os.IBinder;
    import android.util.Log;
    
    public class MyService extends Service{
    
        private  static final String TAG ="MyService";
    
        /**
         * 必须实现的方法   绑定服务时调用的方法
         */
        @Override
        public IBinder onBind(Intent intent) {
            // TODO Auto-generated method stub
    
            Log.e(TAG , "===onBind===");
            return new MyBinder();
        }
    
        //创建MyBinder类  将MyBinder传递给 绑定源   Service 不能直接去new 通过传递才可以
        public class MyBinder extends Binder{
            public MyService getService(){
                return MyService.this;
    
            }
        } 
    
        /**
         * 随机数
         * @return
         */
        public int getRandom(){
            return (int) (Math.random()*10+1);
    
        }
    
    
    
        /**
         * 表示服务创建时调用
         */
        @Override
        public void onCreate() {
            // TODO Auto-generated method stub
            super.onCreate();
            Log.e(TAG , "===onCreate===");
        }
    
    
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            // TODO Auto-generated method stub
    
    
            Log.e(TAG , "===onStartCommand===");
    
            return START_NOT_STICKY;
        }
    
    
        /**
         * 解除绑定时 调用此方法
         */
        @Override
        public boolean onUnbind(Intent intent) {
            // TODO Auto-generated method stub
            Log.e(TAG , "===onUnbind===");
            return super.onUnbind(intent);
        }
    
        /**
         * Service销毁时调用此方法
         */
        @Override
        public void onDestroy() {
            // TODO Auto-generated method stub
            super.onDestroy();
    
            Log.e(TAG , "===onDestroy===");
        }
    
    }
    

    清单文件

    AndroidManifest.xml

    package com.example.day23_service_demo3;
    
    import android.app.Service;
    import android.content.Intent;
    import android.os.Binder;
    import android.os.IBinder;
    import android.util.Log;
    
    public class MyService extends Service{
    
        private  static final String TAG ="MyService";
    
        /**
         * 必须实现的方法   绑定服务时调用的方法
         */
        @Override
        public IBinder onBind(Intent intent) {
            // TODO Auto-generated method stub
    
            Log.e(TAG , "===onBind===");
            return new MyBinder();
        }
    
        //创建MyBinder类  将MyBinder传递给 绑定源   Service 不能直接去new 通过传递才可以
        public class MyBinder extends Binder{
            public MyService getService(){
                return MyService.this;
    
            }
        } 
    
        /**
         * 随机数
         * @return
         */
        public int getRandom(){
            return (int) (Math.random()*10+1);
    
        }
    
    
    
        /**
         * 表示服务创建时调用
         */
        @Override
        public void onCreate() {
            // TODO Auto-generated method stub
            super.onCreate();
            Log.e(TAG , "===onCreate===");
        }
    
    
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            // TODO Auto-generated method stub
    
    
            Log.e(TAG , "===onStartCommand===");
    
            return START_NOT_STICKY;
        }
    
    
        /**
         * 解除绑定时 调用此方法
         */
        @Override
        public boolean onUnbind(Intent intent) {
            // TODO Auto-generated method stub
            Log.e(TAG , "===onUnbind===");
            return super.onUnbind(intent);
        }
    
        /**
         * Service销毁时调用此方法
         */
        @Override
        public void onDestroy() {
            // TODO Auto-generated method stub
            super.onDestroy();
    
            Log.e(TAG , "===onDestroy===");
        }
    
    }
    
  • 相关阅读:
    【gulp】Gulp的安装和配置 及 系列插件
    python函数:装饰器、修正、语法糖、有参装饰器、global与nonlocal
    python函数:函数参数、对象、嵌套、闭包与名称空间、作用域
    python函数:函数阶段练习
    python函数:函数使用原则、定义与调用形式
    python文件操作:文件指针移动、修改
    python文件操作:文件处理与操作模式
    python文件操作:文件处理案例
    python文件操作:字符编码与文件处理
    python基础:数据类型二
  • 原文地址:https://www.cnblogs.com/muyuge/p/6152185.html
Copyright © 2020-2023  润新知