• 百度音乐盒框架


    需求:我既想让服务在后台长期运行  又想调用服务里面的方法  
      混合方式开启服务 
      (1)先调用startService()方法 保证服务在后台长期运行
      (2)调用bindservice()目的获取我们定义的中间人对象 调用服务里面的方法
      (3)unbindservice() 看这时候服务会不会销毁
      (4)最后调用stopservice() 停止服务 
    //音乐播放服务
    public class MusicService extends Service {
    
        //[2]把我们定义的中间人对象 返回
        @Override
        public IBinder onBind(Intent intent) {
            return new MyBinder();
        }
        //服务第一次开启的是调用
        @Override
        public void onCreate() {
            super.onCreate();
        }
        
        
        //当服务销毁的时候调用
        @Override
        public void onDestroy() {
            super.onDestroy();
        }
    
        //专门用来播放音乐的 
        public void playMusic(){
            System.out.println("音乐播放了");
            //TODO 等讲完多媒体 把该功能完善
            
        }
        
        //音乐暂停了
        public void pauseMusic(){
            System.out.println("音乐暂停了");
        }
        
        //音乐继续播放的方法
        public void  rePlayMusic(){
            System.out.println("音乐继续播放了");
        }
        
        //[1]定义一个中间人对象(IBinder) 
        private class MyBinder extends Binder implements Iservice{
    
            //调用播放音乐的方法
            @Override
            public void callPlayMusic() {
                
                playMusic();
            }
    
            //调用暂停音乐的方法
            @Override
            public void callPauseMusic() {
                
                pauseMusic();
            }
    
            //调用继续播放的方法 
            @Override
            public void callrePlayMusic() {
                
                rePlayMusic();
            }
            
        }
        
        
        
    }
    public interface Iservice {
        //把我们想暴露的方法放到接口中
        public void callPlayMusic();
        public void callPauseMusic();
        public void callrePlayMusic();
        
    }
    public class MainActivity extends Activity {
    
        private Iservice iservice; // 这个就是我们定义的中间人对象
        private MyConn conn;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            //[0]先调用startservice 方法开启服务 保证服务在后台长期运行
            Intent intent = new Intent(this, MusicService.class);
            startService(intent);
            
            // [1]调用bindservice 目的是为了获取我们定义的中间人对象
            conn = new MyConn();
            // 连接MusicService 服务 获取我们定义的中间人对象
            bindService(intent, conn, BIND_AUTO_CREATE);
    
        }
    
        // 点击按钮 进行 音乐播放
        public void click1(View v) {
    
            // 调用播放音乐的方法
            iservice.callPlayMusic();
        }
    
        // 暂停音乐
        public void click2(View v) {
    
            // 调用暂停音乐的方法
            iservice.callPauseMusic();
        }
    
        // 继续播放
        public void click3(View v) {
    
            // 调用继续播放
            iservice.callrePlayMusic();
        }
    
        // 当Activity销毁的时候调用
        @Override
        protected void onDestroy() {
            // 在Activity销毁的时候 取消绑定服务
            unbindService(conn);
    
            super.onDestroy();
        }
    
        private class MyConn implements ServiceConnection {
    
            // 当连接成功时候调用
            @Override
            public void onServiceConnected(ComponentName name, IBinder service) {
                // 获取我们定义的中间人对象
                iservice = (Iservice) service;
    
            }
    
            @Override
            public void onServiceDisconnected(ComponentName name) {
    
            }
    
        }
    
    }
  • 相关阅读:
    Space for commit to queue couldn't be acquired
    数据埋点(浅谈埋点方式与上报收集)
    Hashed Indexes Geospatial Index
    线程安全 对StringBuilder抛出ArrayIndexOutOfBoundsException的探究
    [a,s]=[22,3]
    Flume-ng-sdk源码分析
    pstree
    将线上服务器生成的日志信息实时导入kafka,采用agent和collector分层传输,app的数据通过thrift传给agent,agent通过avro sink将数据发给collector,collector将数据汇集后,发送给kafka
    线程池 最大线程数
    es 300G 数据删除 执行计划 curl REST 操作
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/5987953.html
Copyright © 2020-2023  润新知