zoukankan      html  css  js  c++  java
  • 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===");
        }
    
    }
    
  • 相关阅读:
    牛客练习赛81 B. 小 Q 与彼岸花(DP/Trie/树状数组/FWT/好题)
    HDU6570 Wave(DP)
    HDU6567 Cotree(树的重心/树形DP)
    P1712 [NOI2016] 区间(双指针/线段树)
    P1063 [NOIP2006 提高组] 能量项链(区间DP)
    Jquery
    Jquery
    Jquery
    Jquery 学习
    JS学习
  • 原文地址:https://www.cnblogs.com/muyuge/p/6152185.html
Copyright © 2011-2022 走看看