前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android Service的使用

Android Service的使用

作者头像
码客说
发布2019-10-22 14:47:20
4480
发布2019-10-22 14:47:20
举报
文章被收录于专栏:码客码客

前言

service可以通过两种方式创建:startService()bindService().

  • startService():一般用于在后台上传文件或者下载文件等,不跟其他组件通信,就算启动它的应用被销毁了,它仍然会欢快的在后台执行,直到完成任务的时候自刎(自己调用stopSelf())或者被其他人下黑手(调用stopService()).
  • bindService():允许其他组件跟它进行通信,允许多个客户端绑定到同一个service上,当所有的客户端都解除绑定后,该service就销毁了。

定义Service

代码语言:javascript
复制
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.widget.Toast;

public class PenService extends Service {
    private PenBinder mBinder = new PenBinder();

    public PenService() {
    }

    @Override
    public IBinder onBind(Intent intent) {
        return mBinder;
    }

    public class PenBinder extends Binder {
        /**
         * 虚拟方法,播放音乐
         */
        public void playMusic() {
            Toast.makeText(
                PenService.this,
                "音乐在后台播放",
                Toast.LENGTH_SHORT
            ).show();
        }

    }
}

定义的PenBinder就是能让Activity和Service交互

Activity绑定

bindService()

代码语言:javascript
复制
public class MyApplication extends Application {
    public static Context mContext;

    private PenService.PenBinder penBind;
    private PenConn penConn;

    @Override
    public void onCreate() {
        super.onCreate();
        mContext = getApplicationContext();

        startPenService();
    }

    private void startPenService(){
        if(null == penConn){
            penConn = new PenConn();
        }
        Intent intent = new Intent(this,PenService.class);
        bindService(intent,penConn,BIND_AUTO_CREATE);
    }
    
    private class PenConn implements ServiceConnection {

        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            Log.d("bindLog","bind");
            penBind= (PenService.PenBinder) service;
            //调用service的方法
            penBind.playMusic();
        }

        @Override
        public void onServiceDisconnected(ComponentName name) {
            Log.d("bindLog","unbind");
        }
    }
}

绑定成功后就会调用onServiceConnected

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 定义Service
  • Activity绑定
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档