Android代码心得9-Service之一

Service可以说是安卓入门绕不开的槛,Service的作用是完成后台的进程而无需在Activity中显示。Service的调用一般有StartService与boundService两种方法,前者简单,但无法实现Service与Activity的通信,而且如果没有在Activity中结束,Service会一直在后台运行;后者是将Service与Activity绑定,操作繁琐一点,但可以实现两者的通信,且Service随Activity生命周期结束而结束。既然题目说是之一,那肯定就是介绍第一种StartService
首先是新建一个Service文件,然后重OnCreat,onStartCommand,OnDestroy三个方法,从名字就知道他们分别对应Service创建,运行,销毁时的操作

   @Override
    public void onCreate() {
        player1=MediaPlayer.create(this,R.raw.bgm);
        super.onCreate();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        if(!player1.isPlaying()){
            player1.start();
            state1=player1.isPlaying();
        }
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {
            player1.stop();
            state1=player1.isPlaying();
            player1.release();
        super.onDestroy();
    }
}

在OnCreat方法中读取音乐文件,使用的是MediaPlay.creat方法,两个参数第一个上下文对象,第二个音乐文件。
在OnStartCommand方法中,若player1.isplaying=false,即音乐没有在播放,就启用start方法播放,同时返回一个true的状态给state1
在OnDestroy方法中,停止音乐,同时返回一个false的状态给state1,不要忘记释放引用的资源
然后是MainActivity

final Intent intent=new Intent(MainActivity.this,MusicService.class);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if(MusicService.state1==false) {
                    startService(intent);

                }
            }
        });

这里主要是启动Service的方法,其他没什么好说的

button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(MusicService.state1=true){
                    stopService(intent);

                }
            }
        });

同样这里主要是关闭MainActivity的方法,也没什么好说的
效果
在这里插入图片描述
按下开始播放,按下停止停止

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值